主要内容

设计低通FIR滤波器

这个例子展示了如何设计低通FIR滤波器。这里介绍的许多概念可以扩展到其他反应如高通滤波、带通等。

FIR滤波器广泛应用由于强大的设计算法,存在对他们来说,他们的固有稳定性当非递归形式的实现,可以实现线性相位的缓解,他们简单的可扩展性多重速率的情况下,和充足的硬件支持,存在其他原因。金宝app这个例子展示功能的DSP系统工具箱™低通FIR滤波器的设计与各种特征。

获得低通数字滤波器系数

低通滤波器设计的MATLAB概述了与DSP系统工具箱设计低通滤波器。总结提出了两个函数,返回一个数字滤波器系数向量:firceqripfirgr。的firceqrip时使用过滤器的顺序(相当于过滤器长度)和固定。

N = 100;%冷杉过滤器订单Fp = 20 e3;% 20 kHz passband-edge频率Fs = 96年e3;% 96千赫采样频率Rp = 0.00057565;%对应0.01 dB峰的涟漪Rst = 1的军医;%对应80分贝阻带衰减eqnum = firceqrip (N, Fp / (Fs / 2), (Rp Rst),“passedge”);% eqnum = vec多项式系数fvtool (eqnum“Fs”Fs,“颜色”,“白色”)%可视化过滤器

图级响应(dB)包含一个坐标轴对象。坐标轴对象与标题级响应(dB)包含一个类型的对象。

100年的一个过滤器的选择顺序是任意的。一般来说,一个更大的订单会导致更好的近似理想的更昂贵的实现。翻倍订单大约降低了滤波器的过渡宽度一半(假设所有其他参数保持不变)。

N2 = 200;变化百分比过滤器订单从100年到200年eqNum200 = firceqrip (N2, Fp / (Fs / 2), (Rp Rst),“passedge”);fvt = fvtool (eqnum 1 eqNum200 1“Fs”Fs,“颜色”,“白色”);传奇(fvt数字滤波器;订单= 100”,冷杉的过滤器。订单= 200”)

图级响应(dB)包含一个坐标轴对象。坐标轴对象2级响应(dB)包含标题行类型的对象。这些对象表示冷杉过滤器;= 100,冷杉过滤器。= 200。

最小订单低通滤波器设计

而不是指定过滤器的顺序,firgr可用于确定所需的最小订单满足设计规范。为了做到这一点,有必要指定宽度的过渡区。这是通过设置阻带边缘频率。

置= 23 e3;%过渡宽度=置- FpnumMinOrder = firgr (“minorder”[0,Fp / (Fs / 2),置/ (Fs / 2), 1], [1 1 0 0],(Rp Rst));fvt = fvtool (numMinOrder eqNum200 eqnum, 1, 1, 1,“Fs”Fs,“颜色”,“白色”);传奇(fvt数字滤波器;订单= 100”,冷杉的过滤器。订单= 200”,冷杉的过滤器。订单= 133”)

图级响应(dB)包含一个坐标轴对象。坐标轴对象与标题级响应(dB)包含3线类型的对象。这些对象表示冷杉过滤器;= 100,冷杉过滤器。= 200,冷杉过滤器。= 133。

甚至还可以设计过滤器最小订单(“mineven”)或最低奇怪的顺序(“minodd”)firgr函数。

实现低通滤波器

一旦取得了滤波器系数,滤波器可以实现dsp.FIRFilter。这支持双/金宝app单精度浮点数据以及定点数据。它还支持C和HD金宝appL代码生成和优化代码生成的手臂®®皮层M和手臂皮层。

lowpassFIR = dsp.FIRFilter (“分子”,eqnum);%或eqNum200 numMinOrderfvtool (lowpassFIR“Fs”Fs,“颜色”,“白色”)

图级响应(dB)包含一个坐标轴对象。坐标轴对象与标题级响应(dB)包含一个类型的对象。

为了执行实际的过滤,直接叫冷杉像一个函数。下面的代码过滤高斯白噪声,显示了生成的滤过的信号频谱分析仪为10秒。

范围=简介(“SampleRate”Fs,“AveragingMethod”,“指数”,“ForgettingFactor”,0.5);显示(范围);抽搐toc < 10 x = randn (256 1);y = lowpassFIR (x);范围(y);结束

在一个步骤设计和实现过滤器

方便,设计和实现过滤器可以通过使用一个步骤dsp.LowpassFilter。这也支持浮点、定点C金宝app代码生成,手臂皮层M和手臂皮层优化。

lowpassFilt = dsp.LowpassFilter (“DesignForMinimumOrder”假的,“FilterOrder”N“PassbandFrequency”《外交政策》,“SampleRate”Fs,“PassbandRipple”,0.01,“StopbandAttenuation”,80);抽搐toc < 10 x = randn (256 1);y = lowpassFilt (x);范围(y);结束

注意,作为一个方便,规范直接进入使用分贝值。通带波纹可以检查在FVTool选择“视图”菜单,然后选择“通频带”。dsp.LowpassFilter还可以用于信息检索(biquad)设计。

fvtool (lowpassFilt“Fs”Fs,“颜色”,“白色”)

图级响应(dB)包含一个坐标轴对象。坐标轴对象2级响应(dB)包含标题行类型的对象。

获得的滤波器系数

可以提取滤波器系数dsp.LowpassFilter通过使用特遣部队函数。

eqnum =特遣部队(lowpassFilt);

可调的低通FIR滤波器

低通FIR滤波器的截止频率可以在运行时调整可以实现使用'dsp.VariableBandwidthFIRFilter的对象。这些过滤器不提供相同的粒度控制滤波器的响应特性,但它们确实允许动态频率响应。

vbwFilter = dsp.VariableBandwidthFIRFilter (“CutoffFrequency”1 e3);抽搐告诉= 0;toc < 10 t = toc;如果地板(t) >对%每秒钟加1 kHzvbwFilter。CutoffFrequency = vbwFilter。CutoffFrequency + 1 e3;结束x = randn (256 1);y = vbwFilter (x);范围(y);告诉=地板(t);结束

先进的设计选项:最佳Non-Equiripple低通滤波器

到目前为止使用的所有设计最优equiripple设计。Equiripple设计达到最优分布的偏离理想的反应一致。这个的优点是最小化最大偏差(连锁)。然而,总体偏差,测量往往是大的能量。这可能并不总是可取的。低通滤波信号时,这意味着,在阻带残余信号的能量可能会相对较大。当这是一个问题,最小二乘方法提供最优设计,阻带中的能量最小化。fdesign.lowpass可用于设计最小二乘和其他类型的低通滤波器。下面的代码比较最小二乘冷杉设计一个冷杉equiripple设计相同的滤波器秩序和过渡宽度:

lowpassSpec = fdesign.lowpass (“N, Fp,置”《外交政策》,133年,置,Fs);lsFIR =设计(lowpassSpec,“firls”,“SystemObject”,真正的);LP_MIN = dsp.FIRFilter (“分子”,numMinOrder);fvt = fvtool (LP_MIN lsFIR,“Fs”Fs,“颜色”,“白色”);传奇(fvt“Equiripple设计”,“最小二乘设计”)

图级响应(dB)包含一个坐标轴对象。坐标轴对象2级响应(dB)包含标题行类型的对象。这些对象代表Equiripple设计,最小二乘设计。

注意阻带的衰减随频率的最小二乘设计虽然equiripple设计保持不变。增加衰减最小二乘的情况下最小化能量频带信号的过滤。

Equiripple设计增加阻带衰减

经常不良影响最小二乘设计通带波纹的地区接近通频带边缘往往是大。普遍的低通滤波器,它是可取的,通频带的信号频率过滤的影响尽可能小。在这个程度上,一个equiripple通频带通常是可取的。如果还需要有一个增加阻带衰减,equiripple设计选择提供一种方法来实现这一目标。

FIR_eqrip_slope =设计(lowpassSpec,“equiripple”,“StopbandShape”,“1 / f”,“StopbandDecay”4“SystemObject”,真正的);fvt = fvtool (lsFIR FIR_eqrip_slope,“Fs”Fs,“颜色”,“白色”);传奇(fvt“最小二乘设计”,“Equiripple设计与阻带衰减(1 / f) ^ 4”)

图级响应(dB)包含一个坐标轴对象。坐标轴对象与标题级响应(dB)包含3线类型的对象。这些对象代表最小二乘设计、Equiripple设计与阻带衰减(1 / f) ^ 4。

注意,阻带非常相似。然而equiripple设计有一个小得多的通带波纹附近的passband-edge频率,20 kHz:

mls =测量(lsFIR);毫克当量=测量(FIR_eqrip_slope);mls.Apass
ans = 0.0121
meq.Apass
ans = 0.0046

另一种可能性是使用一个任意大小规格,选择两个乐队(通带和阻带)。第二乐队,然后,利用权重可以增加整个乐队的衰减。为更多的信息关于这些和其他任意大小的设计任意级滤波器设计

B = 2;%的乐队浮置板轨道,F = [0 Fp linspace (F / 2、40)];一个=[1 1 0(1、长度(F) 2)];W = linspace(1100,长度(F) 2);lowpassArbSpec = fdesign.arbmag (”N, B, F,“,N, B, F (1:2), (1:2), F(3:结束),(3:结束),Fs);lpfilter =设计(lowpassArbSpec,“equiripple”,“B2Weights”W,“SystemObject”,真正的);fvtool (lpfilter“Fs”Fs,“颜色”,“白色”);

图级响应(dB)包含一个坐标轴对象。坐标轴对象2级响应(dB)包含标题行类型的对象。

最小相位低通滤波器设计

到目前为止,我们只考虑线性相位的设计。在许多应用线性相位是可取的。然而,如果线性相位不是要求,最小相位设计可以明显改善了线性相位。然而,最小相位设计并不总是数值健壮。总是与FVTool检查设计。

作为一个例子的优势最小相位设计,考虑的比较与最小相位设计线性相位设计符合相同的设计规范:

Fp = 20 e3;置= 22 e3;Fs = 96年e3;美联社= 0.06;Ast = 80;lowpassSpec = fdesign.lowpass (“Fp,置,美联社,Ast”Fp,置,美联社,Ast, Fs);linphaseSpec =设计(lowpassSpec,“equiripple”,“SystemObject”,真正的);eqripSpec =设计(lowpassSpec,“equiripple”,“minphase”,真的,“SystemObject”,真正的);fvt = fvtool (linphaseSpec eqripSpec,“Fs”Fs,“颜色”,“白色”);传奇(fvt“线性相位equiripple设计”,“最小相位equiripple设计”)

图级响应(dB)包含一个坐标轴对象。坐标轴对象与标题级响应(dB)包含3线类型的对象。这些对象代表线性相位equiripple设计,最小相位equiripple设计。

注意,系数的数量已经从173人削减到141人。群时延情节也揭示了最小相位设计的优点。注意,群延迟更小(特别是在通频带地区)。

fvt = fvtool (linphaseSpec eqripSpec,“Fs”Fs,“分析”,“grpdelay”,“颜色”,“白色”);传奇(fvt“线性相位equiripple设计”,“最小相位equiripple设计”)

图群延迟包含一个坐标轴对象。坐标轴对象与标题群延迟包含2线类型的对象。这些对象代表线性相位equiripple设计,最小相位equiripple设计。

最小订单使用多级技术低通滤波器的设计

一种不同的方法来降低系数的数量不涉及最小相位设计是使用多级技术。在这里我们展示一个插值冷杉(IFIR)方法。这种方法将设计问题分解成两个级联滤波器设计。对于这个示例,设计需要151系数,而不是173年。更多信息,见高效窄过渡带冷杉滤波器设计

Fp = 20 e3;置= 22 e3;Fs = 96年e3;美联社= 0.06;Ast = 80;lowpassSpec = fdesign.lowpass (“Fp,置,美联社,Ast”Fp,置,美联社,Ast, Fs);interpFilter =设计(lowpassSpec,“ifir”,“SystemObject”,真正的);成本(interpFilter)
ans =结构体字段:NumCoefficients: 151 NumStates: 238 MultiplicationsPerInputSample: 151 AdditionsPerInputSample: 149
fvt = fvtool (linphaseSpec interpFilter,“Fs”Fs,“颜色”,“白色”);传奇(fvt“线性相位equiripple设计”,“窜改冷杉equiripple设计(两个阶段))

图级响应(dB)包含一个坐标轴对象。坐标轴对象与标题级响应(dB)包含3线类型的对象。这些对象代表线性相位equiripple设计、内插冷杉equiripple设计(两个阶段)。

在这种情况下,群延迟情节揭示IFIR设计的缺点。IFIR设计确实提供了线性相位时,群延迟一般比类似的单级设计。

fvt = fvtool (linphaseSpec interpFilter,“Fs”Fs,“分析”,“grpdelay”,“颜色”,“白色”);传奇(fvt“线性相位equiripple设计”,“窜改冷杉equiripple设计(两个阶段))

图群延迟包含一个坐标轴对象。坐标轴对象与标题群延迟包含2线类型的对象。这些对象代表线性相位equiripple设计、内插冷杉equiripple设计(两个阶段)。

低通滤波器设计多重速率的应用程序

低通滤波器广泛应用于杀害多人者和插入器的设计。有关更多信息,请参见杀害多人者和插入器的设计。在多级技术的更多信息,导致非常高效的实现,明白了多级速度转换