主要内容

MATLAB低通滤波器设计

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

简介

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

FIR低通设计-指定滤波器顺序

在许多实际情况中,您必须指定筛选器顺序。其中一种情况是,如果您的目标硬件已经将过滤器顺序限制为特定的数字。另一种常见的情况是,当您已经计算了实现的可用计算预算(MIPS),这为您提供了有限的过滤器顺序。信号处理工具箱中的FIR设计功能(包括fir1firpm,firls)都能够按照指定的顺序设计低通滤波器。在DSP系统工具箱中,指定顺序的低通FIR滤波器设计的首选函数为firceqrip.该函数设计具有指定通带/阻带纹波值和指定通带边频率的最佳等纹波低通/高通FIR滤波器。阻带边缘频率是由设计决定的。

设计一个低通FIR滤波器用于48千赫的数据采样。通带边缘频率为8千赫。通带纹波为0.01 dB,阻带衰减为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 = firceqrip(N,Fp/(Fs/2),[Rp Rst],“passedge”);fvtool (NUM“Fs”Fs)

图幅度响应(dB)包含一个轴对象。标题为Magnitude Response (dB)的axes对象包含一个类型为line的对象。

由此产生的止带边缘频率约为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],...[1 1 0 0],[Rp,Rst]);

绘制最小阶FIR滤波器的幅频响应firgr以及设计的120阶滤波器firceqrip.最小阶设计的结果是一个100阶滤波器。120阶滤波器的过渡区域,正如预期的那样,比100阶滤波器的过渡区域更窄。

hvft = fvtool(NUM,1,NumMin,1,“Fs”Fs);传奇(hvft' n = 120'' n = 100'

图幅度响应(dB)包含一个轴对象。标题为Magnitude Response (dB)的axis对象包含2个类型为line的对象。这些对象代表N = 120, N = 100。

过滤数据

要将筛选器应用于数据,可以使用过滤器或者可以使用命令dsp。FIRFilterdsp。FIRFilter具有在循环中执行时管理状态的优点。dsp。FIRFilter还具有定点功能,并支持C代码生成,HDL代码生成,以及针对ARM®Corte金宝appx®M和ARM Cortex A的优化代码生成。

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

LP_FIR = dsp。FIRFilter (“分子”, NUM);光谱分析仪(“SampleRate”Fs);抽搐Toc < 10 x = randn(256,1);y = LP_FIR(x);步骤(SA_FIR, y);结束发行版(SA_FIR)

使用dsp。LowpassFilter

dsp。LowpassFilter有替代使用的方法吗firceqrip而且firgr连同dsp。FIRFilter.基本上,dsp。LowpassFilter将两步过程浓缩为一个步骤。dsp。LowpassFilter提供了相同的优势dsp。FIRFilter提供了定点支持、C代码生成支持、HDL代码生成支持和ARM Cor金宝apptex代码生成支持。

设计一个低通FIR滤波器用于48千赫的数据采样。通带边缘频率为8千赫。通带纹波为0.01 dB,阻带衰减为80 dB。将过滤器的顺序限制为120。创建一个dsp。FIRFilter根据您的规格。

LP_FIR = dsp。LowpassFilter(“SampleRate”Fs,...“DesignForMinimumOrder”假的,“FilterOrder”N...“PassbandFrequency”《外交政策》,...“PassbandRipple”据美联社,,“StopbandAttenuation”, Ast);

里面的系数LP_FIR和里面的系数一样吗全国矿工工会

NUM_LP = tf(LP_FIR);

你可以使用LP_FIR直接过滤数据,如前面的示例所示。您还可以使用FVTool分析过滤器或使用测量

fvtool (LP_FIR“Fs”Fs);

图幅度响应(dB)包含一个轴对象。标题为Magnitude Response (dB)的axis对象包含2个类型为line的对象。

测量(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,...“DesignForMinimumOrder”,真的,...“PassbandFrequency”《外交政策》,...“StopbandFrequency”置,...“PassbandRipple”据美联社,,...“StopbandAttenuation”, Ast);测量(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 = order(LP_FIR_minOrd)
Nlp = 100

IIR滤波器的设计

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

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

N = 10;LP_IIR = dsp。LowpassFilter(“SampleRate”Fs,...“FilterType”“信息检索”...“DesignForMinimumOrder”假的,...“FilterOrder”N...“PassbandFrequency”《外交政策》,...“PassbandRipple”据美联社,,...“StopbandAttenuation”, Ast);

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

hfvt = fvtool(LP_FIR,LP_IIR,“Fs”Fs);传奇(hfvt'FIR等纹波,N = 120'...IIR椭圆,N = 10);

图幅度响应(dB)包含一个轴对象。标题为Magnitude Response (dB)的axis对象包含2个类型为line的对象。这些对象代表FIR等纹波,N = 120, IIR椭圆,N = 10。

成本(LP_FIR)
cost_FIR =带字段的结构:NumCoefficients: 121 NumStates: 120 MultiplicationsPerInputSample: 121 AdditionsPerInputSample: 120
cost(LP_IIR)
cost_IIR =带字段的结构:NumCoefficients: 25 NumStates: 20 MultiplicationsPerInputSample: 25 AdditionsPerInputSample: 20

FIR和IIR滤波器具有相似的幅度响应。IIR滤波器的成本大约是FIR滤波器成本的1/6。

运行IIR过滤器

IIR滤波器被设计成一个双角滤波器。要将过滤器应用于数据,请使用与FIR情况相同的命令。

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

光谱分析仪(“SampleRate”Fs);抽搐Toc < 10 x = randn(256,1);y = LP_IIR(x);SA_IIR (y);结束发行版(SA_IIR)

可变带宽FIR和IIR滤波器

您还可以设计允许您在运行时更改截止频率的滤波器。dsp。VariableBandwidthFIRFilter而且dsp。VariableBandwidthIIRFilter可用于此类情况。

相关的话题