Filter
Filter 技术是servlet 2.3 新增加的功能。servlet2.3是sun公司于2000年10月发布的,它的开发者包括许多个人和公司团体,充分体现了sun公司所倡导的代码开放性原则。在众多参与者的共同努力下,servlet2.3比以往功能都强大了许多,而且性能也有了大幅提高。
基本介绍
- 中文名:过滤器
- 外文名:Filter
- 所属:servlet 2.3
- 出自:sun公司
- 发布:2000年10月
- 体现:代码开放性原则
- 作用:改变request和修改response
特点功能
它新增加的功能包括:1. 应用程式生命周期事件控制;2. 新的国际化;3. 澄清了类的装载规则;4. 新的错误及安全属性;5. 不赞成使用HttpUtils 类;6. 各种有用的方法;7. 阐明并扩展了几个servlet DTD;8. filter功能.
功能介绍
其中最重要的就是filter功能.它使用户可以改变一个request和修改一个response. Filter 不是一个servlet,它不能产生一个response,它能够在一个request到达servlet之前预处理request,也可以在response离开servlet时处理response.换种说法,filter其实是一个“servlet chaining“(servlet 链).包括1. 在servlet被调用之前截获;2. 在servlet被调用之前检查servlet request;3. 根据需要修改request头和request数据;4. 根据需要修改response头和response数据;5. 在servlet被调用之后截获.你能够配置一个filter 到一个或多个servlet;单个servlet或servlet组能够被多个filter 使用。几个实用的filter 包括:用户辨认filter,日誌filter,审核filter,加密filter,符号filter,能改变xml内容的XSLT filter等。一个filter必须实现javax.servlet.Filter。三个方法1. void setFilterConfig(FilterConfig config) //设定filter 的配置对象;2. FilterConfig getFilterConfig() //返回filter的配置对象;3. void doFilter(ServletRequest req,ServletResponse res,FilterChain chain) //执行filter 的工作.注:现setFilterConfig和getFilterConfig方法已取消,代之为init(FilterConfig config)和destory()方法。伺服器每次只调用setFilterConfig方法一次準备filter 的处理;调用doFilter方法多次以处理不同的请求.FilterConfig接口有方法可以找到filter名字及初始化参数信息.伺服器可以设定FilterConfig为空来指明filter已经终结.每一个filter从doFilter()方法中得到当前的request及response.在这个方法里,可以进行任何的针对request及response的操作.(包括收集数据,包装数据等).filter调用chain.doFilter()方法把控制权交给下一个filter.一个filter在doFilter()方法中结束.如果一个filter想停止request处理而获得对response的完全的控制,那它可以不调用下一个filter.一个filter可以包装request 或response以改变几个方法和提供用户定製的属性.Api2.3提供了HttpServletRequestWrapper 和HttpServletResponseWrapper来实现.它们能分派最初的request和response.如果要改变一个方法的特性,必须继承wapper和重写方法.下面是一段简单的日誌filter用来记录所有request的持续时间.public class LogFilter implements Filter {FilterConfig config;public void setFilterConfig(FilterConfig config) {this.config = config;}public FilterConfig getFilterConfig() {return config;}public void doFilter(ServletRequest req,ServletResponse res,FilterChain chain) {ServletContext context = getFilterConfig().getServletContext();long bef = System.currentTimeMillis();chain.doFilter(req,res); // no chain parameter needed herelong aft = System.currentTimeMillis();context.log("Request to " + req.getRequestURI()+ ": " + (aft-bef));}}当server调用setFilterConfig(),filter保存config信息.在doFilter()方法中通过config信息得到servletContext.如果要运行这个filter,必须去配置到web.xml中.以tomcat4.01为例:<filter><filter-name>
log //filter 名字</filter-name><filter-class>LogFilter //filter class(上例的servlet)</filter-class></filter><filter-mapping><filter-name>log</filter-name>< url-pattern>/*< /url-pattern></filter-mapping><servlet><servlet-name>servletname</servletname><servletclass>servletclass</servlet-class></servlet><servlet-mapping><servlet-name>servletname</servlet-name><url-pattern>*</url-pattern></servlet-mapping>把这个web.xml放到web-inf中(详请参考tomcat帮助文档).当每次请求一个request时(如index.jsp),先到LogFilter中去并调用doFilter()方法,然后才到各自的servlet中去.如果是一个简单的servlet(只是一个页面,无任何输出语句),那幺可能的输出是:Request to /index.jsp: 10
PHP
简介在 PHP 中,Filter 用于对来自非安全来源的数据(比如用户输入)进行验证和过滤。安装Filter 函式是 PHP 核心的组成部分。无需安装即可使用这些函式。函式PHP:指示支持该函式的最早的 PHP 版本。filter_has_var() 检查是否存在指定输入类型的变数,php版本5filter_id() 返回指定过滤器的 ID 号,php版本5filter_input() 从脚本外部获取输入,并进行过滤,php版本5filter_input_array() 从脚本外部获取多项输入,并进行过滤,php版本5filter_list() 返回包含所有得到支持的过滤器的一个数组,php版本5filter_var_array() 获取多个变数,并进行过滤,php版本为5filter_var() 获取一个变数,并进行过滤,php版本为5
函式
PHP Filter 函式MFC概念Filter是一个COM组件,由一个或多个Pin组成。Pin也是一个COM组件。Filter档案的扩展名为.ax,但也可以是.dll。Filter根据其包含Input pin或Output pin的情况(或在Filter Graph中的位置),大致可分为三类:Source Filter(仅有Output pin)、Transform Filter(同时具有Input pin和Output pin)和Renderer Filter(仅有Input pin)。一般情况下,创建Filter使用一个普通的Win32 DLL项目。而且,一般Filter项目不使用MFC。这时,应用程式通过调用CoCreateInstance函式创建Filter实例;Filter与应用程式在二进制级别协作。另外一种方法,也可以在MFC的应用程式项目中创建Filter。这种情况下,Filter不需注册为COM组件,Filter与应用程式之间的协作是原始码级别的;创建Filter实例,不再使用CoCreateInstance函式,而是直接new出一个Filter对象,如下:m_pFilterObject = new CFilterClass();// make the initial refcount 1 to match COM creationm_pFilterObject ->AddRef();因为Filter的基类实现了对象的引用计数,所以即使在第二种情况下,对创建后的Filter对象的操作也完全可以遵循COM标準。Filter是一个独立功能模组,最好不要将Filter依赖于其他第三方的DLL。因为Filter具有COM的位置透明性特点,Filter档案可以放在硬碟的任何位置,只要位置移动后重新注册。但此时,如果Filter依赖其他DLL,则Filter对该DLL的定位就会出现问题。Filter不能脱离Filter Graph单独使用。所以,如果你想绕过Filter Graph直接使用Filter实现的模组功能,请将你的Filter移植成DMO(DirectX Media Object)。对于DirectShow应用程式开发者来说,还有一点,请不要忘记使用OleInitialize进行初始化。
注册
Filter是COM组件,所以在使用前一定要注册。Filter的注册程式为regsvr32.exe。如果带上命令行参数/u,表示注销;如果带上是/s,表示不弹出任何注册/注销成功与否的提示对话框。如果你想在Build Filter项目的时候进行自动注册,请在VC的Project settings的Custom Build页如下设定:Description: Register filterCommands: regsvr32 /s /c $(TargetPath)echo regsvr32 exe.time > $(TargetDir)\$(TargetName).trg
Outputs: $(TargetDir)\$(TargetName).trgFilter的注册信息包括两部分:基本的COM信息和Filter信息。注册信息都存放在注册表中。前者的位置为:HKEY_CLASSES_ROOT\CLSID\Filter Clsid\,后者的位置为:HKEY_CLASSES_ROOT\CLSID\Category\Instance\ Filter Clsid\。COM信息标示了Filter是一个标準的可以通过CoCreateInstance函式创建的COM组件,Filter信息标示了我们通过Graphedit看到的描述这个Filter的信息。如果你不想让Graphedit看到(或者让Filter枚举器找到)你写的Filter,你完全可以不注册Filter信息。而且不用担心,你这幺做也完全不会影响Filter的功能。禁止注册Filter信息的方法也很简单。因为CBaseFilter实现了IAMovieSetup接口的两个函式:Register和Unregister。我们只需重载这两个函式,直接return S_OK就行了。Filter的Merit值。这个值是微软的“智慧型连线”函式使用的。在Graphedit中,当我们加入一个Source Filter后,在它的pin上执行“Render”,会自动连上一些Filter。Merit的值参考如下:MERIT_PREFERRED = 0x800000,MERIT_NORMAL = 0x600000,MERIT_UNLIKELY = 0x400000,MERIT_DO_NOT_USE = 0x200000,MERIT_SW_COMPRESSOR = 0x100000,MERIT_HW_COMPRESSOR = 0x100050Merit值只有大于MERIT_DO_NOT_USE的时候才有可能被“智慧型连线”使用;Merit的值越大,这个Filter的机会就越大。
连线过程
Filter只有加入到Filter Graph中并且和其它Filter连线成完整的链路后,才会发挥作用。Filter之间的连线(也就是Pin之间的连线),实际上是连线双方的一个Media type的协商过程。连线的方向总是从Output pin指向Input pin。连线的大致过程为:如果调用连线函式时已经指定了完整的Media type,则用这个Media type进行连线,成功与否都结束连线过程;如果没有指定或不完全指定了Media type,则进入下面的枚举过程。枚举欲连线的Input pin上所有的Media type,逐一用这些Media type与Output pin进行连线(如果连线函式提供了不完全Media type,则要先将每个枚举出来的Media type与它进行匹配检查),如果Output pin也接受这种Media type,则Pin之间的连线宣告成功;如果所有Input pin上枚举的Media type,Output pin都不支持,则枚举Output pin上的所有Media type,并逐一用这些Media type与Input pin进行连线。如果Input pin接受其中的一种Media type,则Pin之间的连线到此也宣告成功;如果Output pin上的所有Media type,Input pin都不支持,则这两个Pin之间的连线过程宣告失败。
每个Pin都可以实现GetMediaType函式来提供该Pin上支持的所有Preferred Media type(但一般只在Output pin上实现,Input pin主要实现CheckMediaType看是否支持当前提供的Media type就行了)。连线过程中,Pin上枚举得到的所有Media type就是这里提供的。在CBasePin类中有一个protected的成员变数m_bTryMyTypesFirst,默认值为false。在我们定製Filter的Output pin中改变这个变数的值为true,可以定製我们自己的连线过程(先枚举Output pin上的Media type)。当Pin之间的连线成功后,各自的pin上都会调用CompleteConnect函式。我们可以在这里取得一些连线上的Media type的信息,以及进行一些计算等。在Output pin的CompleteConnect实现中,还有一个重要的任务,就是协商Filter Graph运行起来后Sample传输使用的记忆体配置情况。这同样是一个互动过程:首先要询问一下Input pin上的配置要求,如果Input pin提供记忆体管理器(Allocator),则优先使用Input pin上的记忆体管理器;否则,使用Output pin自己生成的记忆体管理器。我们一般都要实现DecideBufferSize来决定存放Sample的记忆体大小。注意:这个过程协商完成之后,实际的记忆体并没有分配,而要等到Output pin上的Active函式调用。概述Media type一般可以有两种表示:AM_MEDIA_TYPE和CMediaType。前者是一个Struct,后者是从这个Struct继承过来的类。每个Media type有三部分组成:Major type、Subtype和Format type。这三个部分都使用GUID来唯一标示。Major type主要定性描述一种Media type,比如指定这是一个Video,或Audio或Stream等;Subtype进一步细化Media type,如果Video的话可以进一步指定是UYVY或YUY2或RGB24或RGB32等;Format type用一个Struct更进一步细化Media type。如果Media type的三个部分都是指定了某个具体的GUID值,则称这个Media type是完全指定的;如果Media type的三个部分中有任何一个值是GUID_NULL,则称这个Media type 是不完全指定的。GUID_NULL具有通配符的作用。常用的Major type:MEDIATYPE_Video;MEDIATYPE_Audio;MEDIATYPE_AnalogVideo; // Analog captureMEDIATYPE_AnalogAudio;MEDIATYPE_Text;MEDIATYPE_Midi;MEDIATYPE_Stream;MEDIATYPE_Interleaved; // DV camcorder
MEDIATYPE_MPEG1SystemStream;MEDIATYPE_MPEG2_PACK;MEDIATYPE_MPEG2_PES;MEDIATYPE_DVD_ENCRYPTED_PACK;MEDIATYPE_DVD_NAVIGATION;常用的Subtype:MEDIASUBTYPE_YUY2;MEDIASUBTYPE_YVYU;MEDIASUBTYPE_YUYV;MEDIASUBTYPE_UYVY;MEDIASUBTYPE_YVU9;MEDIASUBTYPE_Y411;MEDIASUBTYPE_RGB4;MEDIASUBTYPE_RGB8;MEDIASUBTYPE_RGB565;MEDIASUBTYPE_RGB555;MEDIASUBTYPE_RGB24;MEDIASUBTYPE_RGB32;MEDIASUBTYPE_ARGB32; // Contains alpha valueMEDIASUBTYPE_Overlay;MEDIASUBTYPE_MPEG1Packet;MEDIASUBTYPE_MPEG1Payload; // Video payloadMEDIASUBTYPE_MPEG1AudioPayload; // Audio payloadMEDIASUBTYPE_MPEG1System; // A/V payloadMEDIASUBTYPE_MPEG1VideoCD;MEDIASUBTYPE_MPEG1Video;MEDIASUBTYPE_MPEG1Audio;MEDIASUBTYPE_Avi;MEDIASUBTYPE_Asf;MEDIASUBTYPE_QTMovie;MEDIASUBTYPE_PCM;MEDIASUBTYPE_WAVE;MEDIASUBTYPE_dvsd; // DVMEDIASUBTYPE_dvhd;MEDIASUBTYPE_dvsl;MEDIASUBTYPE_MPEG2_VIDEO;MEDIASUBTYPE_MPEG2_PROGRAM;MEDIASUBTYPE_MPEG2_TRANSPORT;MEDIASUBTYPE_MPEG2_AUDIO;MEDIASUBTYPE_DOLBY_AC3;MEDIASUBTYPE_DVD_SUBPICTURE;MEDIASUBTYPE_DVD_LPCM_AUDIO;MEDIASUBTYPE_DVD_NAVIGATION_PCI;MEDIASUBTYPE_DVD_NAVIGATION_DSI;MEDIASUBTYPE_DVD_NAVIGATION_PROVIDER;
常用的Format type:FORMAT_NoneFORMAT_DvInfo DVINFOFORMAT_MPEGVideo MPEG1VIDEOINFOFORMAT_MPEG2Video MPEG2VIDEOINFOFORMAT_VideoInfo VIDEOINFOHEADERFORMAT_VideoInfo2 VIDEOINFOHEADER2FORMAT_WaveFormatEx WAVEFORMATEX
平台
概念WordPress中的Filter是一些函式,这些函式在数据写到资料库之前或者传送到浏览器之前被调用,完成一些文字的修改和过滤功能。WordPress二次开发者可以自行注册添加Filter,WordPress会根据各个Filter的优先权来顺序调用,从而达到扩展WordPress,完成开发者指定功能的目的。
声明注册
Filter实际上只是一些函式,在编写函式之前,要确定这个Filter属于哪一类,不同类的Filter,所需要的参数是不一样的,预设情况下,参数个数为一个。在WordPress中,Filter的类名是通过Tag来指定的,每个Tag下可以定义很多Filter,每个Filter又可以有自己的优先权。Filter是通过Tag来调用的,每次调用,注册在该Tag下的所有的Filter都会被运行,这些Filter的调用顺序是根据注册时定义的优先权来确定的,优先权数值低的先执行,优先权数值高的后执行。要知道具体某一类Filter的参数是什幺,需要先知道该类Filter的Tag名,不同的Tag在不同的时候会被调用,通过查阅WordPress文档找到添加Filter的适当地方。然后在WordPress的源码中搜寻该Tag的名字,查找某个已加入该Tag的函式或者说是Filter,确定函式参数以后就可以编写自己的实现函式了。注意要在函式中返回处理过后的内容以供其他的Filter继续处理。当Filter定义完成以后,通过Add_filter这个函式将Filter添加到整个WordPress系统中。其中Add_filter函式的声明是这样的:function add_filter($tag,$function_to_add,$priority = 10,$accepted_args = 1)其中第一个参数是Tag名,也就是上面提到的Filter类名,第二个参数是实现具体功能的函式名,第三个参数是优先权,预设为10,第四个参数是改Filter接受参数的个数,预设为一个。如果想让Filter在比较后面调用,可以将第三个参数设得比10大,那幺一般情况下,该Filter会在WordPress自带Filter都调用完以后再调用这个新加的Filter。反之则可以把优先权设得比10小。实例作为一个例子,假设我们想要在每篇文章下面加上这篇文章的连结地址,声明一下版权资讯。也就是在每篇文章后面加上这幺一句话:“本文地址:http://xxx.xxx.xxx/ 转载请注明”通过查阅WordPress文档知,每个单篇文章在传送到浏览器之前要调用Filter the_content。于是这个Filter可以加到Tag the_content里面。并且通过查阅一个该Tag里面的函式知,这类Filter只有一个参数进来,那就是文章的内容本身。这样该Filter就比较清楚了,只要在文章内容的最后添加上面的一行声明就好了。另外,为了保证该Filter在最后被调用,在注册该Filter的时候,把优先权数字设得稍微大一点。具体代码如下:
function my_copyright($content){$content .= "本文地址:http://xxx.xxx.xxx/ 转载请注明";return $content ;}add_filter("the_content",my_copyright,15);当然,这只是个最简单的例子,要实用还需要一些改动,但是添加一个Filter的过程基本上就是这样。
滤镜样式
数据传送Filter之间的数据是通过Sample来传送的。Sample是一个COM组件,拥有自己的一段数据缓冲。Sample由Allocator统一管理。如下图所示:Filter之间数据传送的方式有两种:Push模式和Pull模式。css中的filter滤镜功能CSS静态滤镜样式 (filter)(只有IE4.0以上支持)CSS静态滤镜样式的使用方法:{ filter : filtername( parameters1,parameters2,...) }Filter样式 简要说明 支持参数alpha 设定图片或文字的不透明度 opacity、finishOpacity、style、startX、startY、finishX、finishY、add、direction、strengthblur 在指定的方向和位置上产生动感模糊效果 add、direction、strengthchroma 对所选择的颜色进行透明处理 colordropShadow 在指定的方向和位置上产生阴影 color、offX、offY、positiveflipH 沿水平方向翻转对象flipV 沿垂直方向翻转对象glow 在对象周围上发光 color、strengthgray 将对象以灰度处理invert 逆转对象颜色light 对对象进行模拟光照mask 对对象生成掩膜 colorshadow 沿对象边缘产生阴影 color、directionwave 在垂直方向产生正弦波形 add、freq、lightStrength、phase、strengthxray 改变对象颜色深度,并绘製黑白图象以上就是静态滤镜的全部内容,要注意的是CSS是区分大小写的!动态滤镜动态滤镜可以为页面添加动人的淡入淡出、图象转化效果,它可以分为两种blend(混合)和reveal(显示),前者可以使对象渐渐消失或出现,后者提供了24种图象转化的效果。对于动态滤镜的调用除去象在静态滤镜中要定义的滤镜类型,参数等等,还用到脚本语言控制它的状态。首先,在开始一个动态效果之前,先需要进行装备(Apply),然后播放(Play)动态效果,在动态效果进行中还可以中断动态效果(Stop),以上可以用下面的方法实现:对象名.filters(滤镜数值).Apply()对象名.filters(滤镜数值).Play()
对象名.filters(滤镜数值).Stop()对于滤镜状态的判断可以通过“对象名.filters(滤镜数值).status”判断,该值为0时,表示滤镜未执行,为1时,表示滤镜已经完成,为2时表示滤镜在执行中。在定义filter时,如上面所提到的,可以有混合(“filter:blendTrans(duration=时间数值)”,duration表示滤镜执行需要的时间,单位为秒)和显示(“filter:revealTrans(duration=时间数值,transition=过渡类型)”,过渡类型为从0-23的数值)两种。滤镜还未被W3C正式承认。滤镜只是微软IE浏览器的组成部分,不能用于Netscape浏览器。制定有关标準的组织正在就此进行讨论,但尚未达成最后定论。在我看来,滤镜是一种非常有趣而且是製作精彩的视觉效果必不可少的一部分。滤镜能节省频宽,而且是你能在製作奇妙的视觉设计时使用文字格式,而不必先製作庞大的文字点阵图以取得相同的效果。但由于这些功能尚未成为HTML的正式组成部分,所以并不是所有的浏览器都能看到这些特色。有些时候,你必须考虑以传统的方式製作相同的效果,当然,你不得不继续将庞大的GIF档案塞到网页之中。沉默...沉默...CSS滤镜filter详解语法:STYLE="filter:filtername(fparameter1,fparameter2...)"(Filtername为滤镜的名称,fparameter1、fparameter2等是滤镜的参数)滤镜说明:alpha:设定透明层次blur:创建高速度移动效果,即模糊效果chroma:製作专用颜色透明DropShadow:创建对象的固定影子FlipH:创建水平镜像图片FlipV:创建垂直镜像图片glow:加光辉在附近对象的边外gray:把图片灰度化invert:反色light:创建光源在对象上mask:创建透明掩膜在对象上shadow:创建偏移固定影子wave:波纹效果
Xray
Alpha语法:STYLE="filter:Alpha(Opacity=opacity,FinishOpacity=finishopacity,Style=style,StartX=startX,StartY=startY,FinishX=finishX,FinishY=finishY)"说明:Opacity:起始值,取值为0~100,0为透明,100为原图。FinishOpacity:目标值。Style:1或2或3StartX:任意值StartY:任意值例子:filter:Alpha(Opacity="0",FinishOpacity="75",Style="2")
blur语法:STYLE="filter:Blur(Add = add,Direction = direction,Strength = strength)"说明:Add:一般为1,或0。Direction:角度,0~315度,步长为45度。Strength:效果增长的数值,一般5即可。例子:filter:Blur(Add="1",Direction="45",Strength="5")Chroma语法:STYLE="filter:Chroma(Color = color)"说明:color:#rrggbb格式,任意。例子:filter:Chroma(Color="#FFFFFF")DropShadow语法:STYLE="filter:DropShadow(Color=color,OffX=offX,OffY=offY,Positive=positive)"说明:Color:#rrggbb格式,任意。Offx:X轴偏离值。Offy:Y轴偏离值。Positive:1或0。例子:filter:DropShadow(Color="#6699CC",OffX="5",OffY="5",Positive="1")FlipH语法:STYLE="filter:FlipH"例子:filter:FlipHFlipV语法:STYLE="filter:FlipV"例子:filter:FlipVglow语法:STYLE="filter:Glow(Color=color,Strength=strength)"说明:Color:发光颜色。Strength:强度(0-100)例子:filter:Glow(Color="#6699CC",Strength="5")gray语法:STYLE="filter:Gray"例子:filter:Grayinvert语法:STYLE="filter:Invert"例子:filter:Invertmask语法:STYLE="filter:Mask(Color=color)"例子:filter:Mask (Color="#FFFFE0")shadow语法:filter:Shadow(Color=color,Direction=direction)
说明:Color:#rrggbb格式。Direction:角度,0-315度,步长为45度。例子:filter:Shadow (Color="#6699CC",Direction="135")wave语法:filter: Wave(Add=add,Freq=freq,LightStrength=strength,Phase=phase, Strength=strength)说明:Add:一般为1,或0。Freq:变形值。LightStrength:变形百分比。Phase:角度变形百分比。Strength:变形强度。例子:filter: wave(Add="0",Phase="4",Freq="5",LightStrength="5",Strength="2")Xray语法:STYLE="filter:Xray"例子:filter:Xray工业金属乐队Filter由曾于89年到93年间担任于工业金属摇滚名团Nine Inch Nails之吉他手的Richard Patrick创建,他坚信他有绝对的新玩意儿,能做出不同于NIN时期所带出的音乐色彩,所包容与展现的音乐性也更大,便毅然决然地离开事业正如日中天的NIN。之后便与也曾在91年至93年间待过NIN的Brian Liesegang以两人完成了95年的首张专辑,在音乐上仍保有NIN工业金属/工业舞曲的狂野力道,不仅加重了摇滚与金属的份量,更加入庞克、低保真等不同的音乐风格进去,成功地让Patrick跨出旧有的音乐藩篱,朝向更多元的音乐经营理念。Filter也为多部电影,包括【The Crow-City Of Angels】、【Spawn】、【The X-Files:Fight The Future】、《2012》(2009)演唱单曲。97年Brian Liesegang因音乐理念的不同而离团后,Filter再加入Frank Cavanaugh(贝斯手)、Steven Gillis(鼓手)及Geno Lenardo(吉它手)三位新血成为一个更完整的四人乐团,并推出99年热门大作「Title Of Record」,此张专辑并获得全美着名另类摇滚杂誌A.P.满分推崇。其中《Fades Like a Photograph》为2009年上映的《2012》的第二首片尾曲。
数学软体
FILTER One-dimensional digital filter.Y = FILTER(B,A,X) filters the data in vector X with thefilter described by vectors A and B to create the filtereddata Y. The filter is a "Direct Form II Transposed"
implementation of the standard difference equation:a(1)*y(n) = b(1)*x(n) + b(2)*x(n-1) + ... + b(nb+1)*x(n-nb)- a(2)*y(n-1) - ... - a(na+1)*y(n-na)If a(1) is not equal to 1,FILTER normalizes the filtercoefficients by a(1).FILTER always operates along the first non-singleton dimension,namely dimension 1 for column vectors and non-trivial matrices,and dimension 2 for row vectors.[Y,Zf] = FILTER(B,A,X,Zi) gives access to initial and finalconditions,Zi and Zf,of the delays. Zi is a vector of lengthMAX(LENGTH(A),LENGTH(B))-1,or an array with the leading dimensionof size MAX(LENGTH(A),LENGTH(B))-1 and with remaining dimensionsmatching those of X.FILTER(B,A,X,[],DIM) or FILTER(B,A,X,Zi,DIM) operates along thedimension DIM.翻译:Y = filter(B,A,X) 过滤向量X,通过係数向量A,B,产生向量Y。[Y,Zf] = filter(B,A,X,Zi)给出初始和最终条件。ZI和Zf是延迟。
音乐作品
- 音乐专辑共1张
- short bus 歌曲12首发布于 1995-05-15音乐线上收听
以上音频资源来自千千音乐