MATLAB的低通滤波器设计

这个例子展示了如何设计低通滤波器。该示例突出显示了DSP System Toolbox™中一些最常用的命令行工具。或者,您可以使用Filter Builder应用程序来实现这里介绍的所有设计。有关更多设计选项,请参见设计低通冷滤波器

介绍

在设计低通滤波器时,首先要选择是设计FIR滤波器还是IIR滤波器。当线性相位响应很重要时,通常选择FIR滤波器。FIR滤波器也倾向于定点实现,因为它们通常对量化效果更健壮。FIR滤波器也被用于许多高速实现,如fpga或asic,因为它们适合流水线操作。IIR滤波器(特别是双四滤波器)用于不考虑相位线性的应用(如音频信号处理)。IIR滤波器通常在计算上更高效,因为它们可以用比FIR滤波器更少的系数来满足设计规范。IIR滤波器也倾向于有更短的瞬态响应和更小的组延迟。然而,使用最小相位和多速率设计可以使FIR滤波器在群延迟和计算效率方面与IIR滤波器相媲美。

FIR低通设计 - 指定过滤器订单

您必须指定许多实际情况,您必须指定过滤器顺序。一个这样的情况是,如果您是针对已将过滤器顺序的硬件定位到特定数字。另一个常见场景是您计算了实现的可用计算预算(MIPS),这为您提供有限的过滤器订单。FIR设计功能在信号处理工具箱中(包括FIR1.FILPM., 和firls.)全部能够以指定的顺序设计低通滤波器。在DSP系统工具箱中,低通FIR滤波器设计具有指定订单的首选功能firceqrip.该函数设计具有指定通带/阻带纹波值和指定通带边缘频率的最优等纹波低通/高通FIR滤波器。阻带边缘频率是由设计决定的。

设计低通FIR滤波器,用于以48 kHz采样的数据。通带边缘频率为8 kHz。通带纹波是0.01dB,并且停止衰减为80 dB。将过滤器顺序约束到120。

n = 120;FS = 48E3;FP = 8E3;AP = 0.01;AST = 80;

在线性单元中获得通带和阻带纹波的最大偏差。

RP =(10 ^(AP / 20) -  1)/(10 ^(AP / 20)+ 1);RST = 10 ^( -  AST / 20);

使用firceqrip并查看幅度频率响应。

num = fireceqrip(n,fp /(fs / 2),[rp rst],'乘客');fvtool(num,“Fs”Fs)

产生的稳定边缘频率约为9.64 kHz。

最小订单设计

最优等纹波滤波器的另一个设计函数是firgrfirgr可以设计符合通带/停止波纹约束的过滤器以及具有最小可能的过滤器顺序的指定过渡宽度。例如,如果停机边缘频率指定为10 kHz,则所得到的滤波器的订单为100,而不是120阶滤波器设计firceqrip.较小的过渡频带较小的过滤器。

指定阻带边缘频率为10khz。获得通带纹波为0.01 dB、阻带衰减为80 dB的最小阶FIR滤波器。

FST = 10E3;nummin = firgr(“minorder”,[0 fp /(fs / 2)fst /(fs / 2)1],[11 0 0],[Rp,RST]);

绘制使用的最小订单FIR滤波器的幅度频率响应firgr和120次设计的滤波器firceqrip.最小订单设计导致具有订单100的滤波器。120阶滤波器的转换区域如预期,比具有订单100的滤波器的过滤器。

HVFT = FVTool(Num,1,Nummin,1,“Fs”Fs);传说(HVFT,“N = 120”'n = 100'

过滤数据

要将过滤器应用于数据,可以使用筛选命令或您可以使用dsp.firfilter.dsp.firfilter.在循环中执行时,具有管理状态的优势。dsp.firfilter.还具有定点功能,支持C代码生成,HDL代码生成,以及ARM®Cortex®M万博1manbetx和ARM Cortex A的优化代码生成。

用120阶FIR低通滤波器对256个样本帧中10秒均值为零、单位标准差为零的白噪声进行滤波。在频谱分析仪上查看结果。

lp_fir = dsp.firfilter('分子', NUM);sa = dsp.spectrumanalyzer(“SampleRate”Fs,“SpectralAverages”5);抽搐尽管toc <10 x = randn(256,1);y = lp_fir(x);步骤(SA,Y);结束

使用dsp。LowpassFilter

dsp。LowpassFilter是使用的替代方案firceqripfirgr和这个结合dsp.firfilter..基本上,dsp。LowpassFilter将两步过程融入一个。dsp。LowpassFilter提供相同的优势dsp.firfilter.提供了定点支持、C代码生成支持、HDL代码生成支持和ARM Cor万博1manbetxtex代码生成支持。

设计低通FIR滤波器,用于以48 kHz采样的数据。通带边缘频率为8 kHz。通带纹波是0.01dB,并且停止衰减为80 dB。约束过滤器顺序到120.创建一个dsp.firfilter.根据您的规格。

lp_fir = dsp.lowpassfilter(“SampleRate”Fs,......'designforminimunder',错误的,'筛选道'N......'Passband职业'《外交政策》,'passbandropple',ap,'stopbandattenuation', Ast);

的系数LP_FIR与系数相同数字

NUM_LP =特遣部队(LP_FIR);

您可以使用LP_FIR要直接过滤数据,如前面的示例所示。您还可以使用FVTool分析过滤器或使用响应措施

fvtool(lp_fir,“Fs”Fs);测量(LP_FIR)
ANS =采样率:48 kHz通带边缘:8 kHz 3-dB点:8.5843 kHz 6-dB点:8.7553 kHz停滞边缘:9.64 kHz通带纹波:0.01 dB停止带。:79.9981 DB过渡宽度:1.64 kHz

基于dsp的最小订单设计。LowpassFilter

您可以使用dsp。LowpassFilter设计最小阶滤波器并使用措施验证设计符合规定的规格。过滤器的顺序还是100。

LP_FIR_minOrd = dsp。LowpassFilter (“SampleRate”Fs,......'designforminimunder',真的,'Passband职业'《外交政策》,......'stopband职业',fst,'passbandropple',ap,'stopbandattenuation', Ast);测量(LP_FIR_MINORD)NLP = ORDER(LP_FIR_MINORD)
ANS =采样率:48 kHz通带边缘:8 kHz 3-dB点:8.7136 kHz 6-dB点:8.922 kHz停滞边缘:10 kHz通带纹波:0.0098641 DB停滞耐用。:80.122 DB过渡宽度:2 kHz NLP = 100

设计IIR过滤器

椭圆滤波器是最优等纹波FIR滤波器的IIR对等物。因此,您可以使用相同的规范来设计椭圆滤波器。你得到的IIR滤波器的阶数比相应的FIR滤波器的阶数要小得多。

设计一个与120阶FIR滤波器具有相同采样频率、截止频率、通带纹波约束和阻带衰减的椭圆滤波器。将椭圆滤波器的滤波顺序减少到10。

n = 10;lp_iir = dsp.lowpassfilter(“SampleRate”Fs,“FilterType”'IIR'......'designforminimunder',错误的,'筛选道'N......'Passband职业'《外交政策》,'passbandropple',ap,'stopbandattenuation', Ast);

比较FIR和IIR设计。计算两种实现的成本。

hfvt = fvtool (LP_FIR LP_IIR,“Fs”Fs);传奇(hfvt'FIR Equiripple,n = 120''IIR椭圆,n = 10');cost_fir =成本(lp_fir)cost_iir =成本(lp_iir)
cost_FIR = struct with fields: NumCoefficients: 121 NumStates: 120 MultiplicationsPerInputSample: 121 AdditionsPerInputSample: 120 cost_IIR = struct with fields: NumCoefficients: 25 NumStates: 20 MultiplicationsPerInputSample: 25 AdditionsPerInputSample: 20

FIR和IIR过滤器具有类似的幅度响应。IIR过滤器的成本约为FIR滤波器的成本约为1/6。

运行IIR过滤器

IIR过滤器设计为各种滤波器。要将过滤器应用于数据,请使用与冷杉案例相同的命令。

用10阶IIR低通滤波器对256个样本帧中均值为零、单位标准差为零的10秒高斯白噪声进行滤波。在频谱分析仪上查看结果。

sa = dsp.spectrumanalyzer(“SampleRate”Fs,“SpectralAverages”5);抽搐尽管toc <10 x = randn(256,1);y = lp_iir(x);说);结束

可变带宽FIR和IIR过滤器

您还可以设计允许您在运行时更改截止频率的过滤器。dsp.variaseBandWidthfirfilter.dsp.variaseBandWidthiirfilter.可用于此类案例。

相关话题