这个例子展示了如何设计和实现一个冷杉过滤器使用两个命令行功能,fir1
和designfilt
和互动滤波器设计应用程序。
创建一个信号使用的例子。信号是一个100 Hz正弦波的添加剂 高斯白噪声。将随机数字生成器设置为默认状态为可再生的效果。
rng默认的Fs = 1000;t = linspace (0, 1, Fs);x = cos(2 *π* 100 * t) + 0.5 * randn(大小(t));
滤波器的设计是一个等于20阶FIR低通滤波器和截止频率为150赫兹。使用Kaiser窗长度大于过滤订单和样品
。看到凯撒
有关凯撒窗口。
使用fir1
设计滤波器。fir1
需要归一化频率区间[0,1],1对应的地方
rad /样品。使用fir1
,您必须将所有频率规范转换为归一化频率。
过滤器和视图设计滤波器的幅度响应。
fc = 150;Wn = (2 / Fs) *俱乐部;Wn b = fir1(20日,“低”3)、kaiser(21日);fvtool (b, 1“Fs”Fs)
过滤器应用于信号和阴谋的结果第十期100 Hz的正弦信号。
y =过滤器(b, 1, x);情节(t t, x,, y) xlim(0.1[0])包含(“时间(s)”)ylabel (“振幅”)传说(原始信号的,过滤数据的)
设计使用相同的过滤器designfilt
。设置滤波器响应“lowpassfir”
和输入的规格名称,值
对。与designfilt
在赫兹,您可以指定您的滤波器设计。
Fs = 1000;高清= designfilt (“lowpassfir”,“FilterOrder”,20岁,“CutoffFrequency”,150,…“DesignMethod”,“窗口”,“窗口”{@kaiser 3},“SampleRate”Fs);
过滤数据和阴谋的结果。
日元=过滤器(高清,x);情节(t, x, t, y1) xlim(0.1[0])包含(“时间(s)”)ylabel (“振幅”)传说(原始信号的,过滤数据的)
这个例子展示了如何设计和实现一个低通滤波器使用方法和互动的窗口滤波器设计应用程序。
启动应用程序通过输入filterDesigner
在命令行中。
设置响应类型来低通滤波器。
设置设计方法来冷杉并选择窗口方法。
下过滤器订单中,选择指定的顺序。设置为20。
下频率的规范,设置单位来赫兹,Fs到1000年,足球俱乐部到150年。
点击设计滤波器。
选择文件>出口……出口你的冷杉滤波器系数的MATLAB®工作区或过滤器对象。在这个例子中,导出过滤器作为对象。指定的变量名高清
。
点击出口。
滤波器的输入信号命令窗口与出口过滤器对象。阴谋的结果第十期100 Hz的正弦信号。
y2 =过滤器(高清,x);情节(t, x, t, y2) xlim(0.1[0])包含(“时间(s)”)ylabel (“振幅”)传说(原始信号的,过滤数据的)
选择文件>生成MATLAB代码>滤波器设计函数生成一个MATLAB函数创建一个过滤器对象使用规范。
您还可以使用交互式工具filterBuilder
设计你的过滤器。
这个例子展示了如何设计一个带通滤波器和过滤数据与最小订单冷杉equiripple和IIR巴特沃斯滤波器。您可以建模许多真实世界的信号的叠加振荡分量,低频趋势,加性噪声。例如,经济数据通常包含振荡,这代表周期叠加在慢变上升或下降的趋势。此外,有一个附加噪声组件,它是测量误差和固有的随机波动。
在这些例子中,假设您样品一些过程每天一年。假设这个过程在大约一周和一个月尺度振荡。此外,有一个低频上升趋势的数据和添加剂 高斯白噪声。
创建两个正弦波的叠加的信号频率的1/7和1/30周期/天。添加一个低频趋势项和增加 高斯白噪声。重置的随机数字生成器可重复的结果。数据采样样本1 /天。情节产生的信号和功率谱密度(PSD)估计。
rng默认的Fs = 1;n = 1:365;x = cos(2 *π* (1/7)* n) + cos(2 *π* (1/30)* nπ/ 4);趋势= 3 * sin(2 *π* (1/1480)* n);y = x +趋势+ 0.5 * randn(大小(n));[pxx f] =周期图(y, [], [], Fs);次要情节(2,1,1)情节(n, y) xlim([365])包含(“天”)网格次要情节(2,1,2)情节(f, 10 * log10 (pxx))包含(“周期/天”)ylabel (“数据库”网格)
低频趋势出现在增加低频电源的功率谱密度估计。低频功率振荡出现大约10 dB以上1/30周期/天。使用这些信息在滤波器阻带的规格。
设计最小订单冷杉equiripple, IIR巴特沃斯滤波器具有以下规格:通频带/天(1/40,1/4)周期和阻带从(0,1/60)和(1/4、1/2)周期/天。设置两个阻带衰减10 dB和通带波纹公差1 dB。
Hd1 = designfilt (“bandpassfir”,…“StopbandFrequency1”,1/60,“PassbandFrequency1”,1/40,…“PassbandFrequency2”1/4,“StopbandFrequency2”1/2,…“StopbandAttenuation1”10“PassbandRipple”,1…“StopbandAttenuation2”10“DesignMethod”,“equiripple”,“SampleRate”Fs);Hd2 = designfilt (“bandpassiir”,…“StopbandFrequency1”,1/60,“PassbandFrequency1”,1/40,…“PassbandFrequency2”1/4,“StopbandFrequency2”1/2,…“StopbandAttenuation1”10“PassbandRipple”,1…“StopbandAttenuation2”10“DesignMethod”,“黄油”,“SampleRate”Fs);
比较FIR和IIR滤波器的顺序和打开阶段反应。
流(冷杉过滤器的顺序是% d \ n ',filtord (Hd1))
冷杉过滤器的顺序是78
流(IIR滤波器的顺序是% d \ n 'filtord (Hd2))
IIR滤波器的顺序是8
[phifir w] = phasez (Hd1, [], 1);[phiiir w] = phasez (Hd2 [], 1);图绘制(w,打开(phifir))在情节(w,打开(phiiir))从包含(“周期/天”)ylabel (“弧度”)传说(冷杉Equiripple过滤器的,IIR巴特沃斯滤波器的网格)
IIR滤波器具有更低的顺序,冷杉过滤器。然而,数字滤波器具有线性相位响应在通频带,而IIR滤波器不。冷杉过滤器延迟滤波器通带中所有的频率一样,而IIR滤波器不。
此外,单位的变化率相位频率更大的FIR滤波器比IIR滤波器。
设计一个低通滤波器冷杉equiripple过滤器进行比较。低通滤波器规格是:通频带(0,1/4)周期/天,阻带衰减等于10 dB,通带波纹宽容设置为1 dB。
Hdlow = designfilt (“lowpassfir”,…“PassbandFrequency”1/4,“StopbandFrequency”1/2,…“PassbandRipple”,1“StopbandAttenuation”10…“DesignMethod”,“equiripple”,“SampleRate”1);
过滤数据的带通和低通滤波器。
yfir =过滤器(Hd1, y);yiir =过滤器(Hd2 y);ylow =过滤器(Hdlow y);
情节的PSD估计带通IIR滤波器的输出。你可以换yiir
与yfir
在以下代码来查看PSD的估计FIR带通滤波器的输出。
[pxx f] =周期图(yiir, [] [], Fs);情节(f, 10 * log10 (pxx))包含(“周期/天”)ylabel (“数据库”网格)
PSD的估计显示了带通滤波器变弱的低频和高频噪声的趋势。
情节的前120天FIR和IIR滤波器的输出。
yfir情节(n, n, yiir)轴([1 120 -2.8 - 2.8])包含(“天”)传说(“FIR带通滤波器的输出”,IIR带通滤波器输出的,…“位置”,“东南”)
相位延迟增加冷杉过滤器是明显的滤波器的输出。
情节低通滤波器输出叠加在7天的叠加和30天的周期进行比较。
情节(x, n, ylow) xlim([365])包含(“天”)传说(7天和30天的周期,FIR低通滤波器输出的,…“位置”,“西北”)
你可以看到在前面的情节,在低通滤波器的输出低频趋势明显。而低通滤波器保留7天,30天的周期,本例中的带通滤波器表现得更好,因为带通滤波器消除低频趋势。
这个例子展示了如何执行零相位滤波。
重复的信号生成和低通滤波器的设计fir1
和designfilt
。你不需要执行下面的代码,如果你已经有了这些变量在工作区中。
rng默认的Fs = 1000;t = linspace (0, 1, Fs);x = cos(2 *π* 100 * t) + 0.5 * randn(大小(t));%使用fir1fc = 150;Wn = (2 / Fs) *俱乐部;Wn b = fir1(20日,“低”3)、kaiser(21日);%使用designfilt高清= designfilt (“lowpassfir”,“FilterOrder”,20岁,“CutoffFrequency”,150,…“DesignMethod”,“窗口”,“窗口”{@kaiser 3},“SampleRate”Fs);
过滤数据使用过滤器
。情节的第一个100分滤波器输出相同的叠加正弦信号幅值和初始阶段作为输入信号。
你=过滤器(高清,x);鑫= cos(2 *π* 100 * t);鑫情节(t, t,你)xlim(0.1[0])包含(“时间(s)”)ylabel (“振幅”)传说(输入正弦波的,过滤数据的网格)
看着初始过滤数据的0.01秒,你会发现被延迟对输入的输出。延迟似乎是大约0.01秒,这是近1/2的长度冷杉过滤器样品 。
这延迟是由于滤波器的相位响应。冷杉过滤器在这些例子中是一种线性相位滤波器。滤波器的群时延是10个样本。
阴谋集团推迟使用fvtool
。
fvtool(高清“分析”,“grpdelay”)
在许多应用程序中,相位失真是可以接受的。相位响应是线性时尤其如此。在其他应用程序中,需要有一个过滤器零相位响应。零相位响应在技术层面上是不可能在一个非因果滤波器。不过,您可以使用一个因果滤波器实现零相位滤波filtfilt
。
滤波器的输入信号使用filtfilt
。情节比较获得的滤波器输出的响应过滤器
和filtfilt
。
yzp = filtfilt(高清,x);鑫情节(t, t,你,t, yzp) xlim(0.1[0])包含(“时间(s)”)ylabel (“振幅”)传说(100 - hz正弦波的,“过滤信号”,“零相位滤波”,…“位置”,“东北”)
在前面的图中,您可以看到的输出filtfilt
不存在延迟由于冷杉滤波器的相位响应。