主要内容

任意幅度滤波器设计

这个例子展示了如何设计具有任意幅值响应的滤波器。滤波器设计(FDESIGN)对象家族允许设计具有各种类型响应的滤波器。在这些类型中,任意量级是最不专门化和最通用的一种。下面的例子说明了当其他响应类型发现局限性时,任意震级设计如何解决问题。

频率采样法的FIR建模

本节说明了在完整的奈奎斯特范围内定义滤波器振幅的情况(没有松弛或“不关心”区域)。下面的示例使用单(全)带规格类型和鲁棒频率采样算法来设计一个滤波器,其振幅定义在三个部分:正弦部分、分段线性部分和二次部分。因为滤光片的形状相当复杂,所以有必要选择较大的滤光片订单:

N = 300;B1 = 0:0.01:0.18;B2 =[。]2 .38 .4 .55 .562 .585 .6 .78];B3 = 0.79:0.01:1;A1 = .5+sin(2*pi*7.5*B1)/4;%正弦截面A2 =[。]5 2.3 1 1 -。2 -。2 1 1];%分段线性截面A3 = .2+18*(1-b3).^2;%二次截面F = [b1 b2 b3];A = [a1 a2 a3];D = fdesign.arbmag(' N、F '、N、F);Hd =设计(d,“freqsamp”“SystemObject”,真正的);fvtool(高清“MagnitudeDisplay”“零”);

{

关上(gcf)

在前面的例子中,归一化频率点分布在0和π rad/sample(包括极值)之间。您还可以指定负频率并获得复杂滤波器。下面的例子模拟了一个复杂的RF带通滤波器,并使用Kaiser窗口来减轻吉布斯现象的影响,吉布斯现象是由于-和π rad/sample频率之间的70 dB幅度差距造成的:

负载cfir.mat%加载一组预定义的频率和振幅向量N = 200;D = fdesign.arbmag(' N、F '、N、F);Hd =设计(d,“freqsamp”“窗口”{@kaiser 20},“SystemObject”,真正的);fvtool(高清“FrequencyRange”“(π-π)”);

{

用等纹波FIR滤波器建模光滑函数

等纹波算法非常适合于平滑函数的建模,如下面的例子所示,该例子用最小阶FIR滤波器对指数进行建模。该示例在所有频率上指定了一个小的纹波值,并定义了权重,权重按比例增加到所需的振幅,以提高高频的性能:

F = linspace(0,1100);A = exp(-2*pi*F);R = 0.045;%的涟漪W = .1-20*log10(abs(A));%的重量D = fdesign.arbmag(“F, R”F, R);Hd =设计(d,“equiripple”“重量”W,“SystemObject”,真正的);fvtool(高清“MagnitudeDisplay”“零”“FrequencyRange”“[0,π)”);

{

单波段与多波段等纹FIR设计

在某些应用中,可能会对滤波器的阻带形状感兴趣,例如,使集成旁瓣水平最小化,或提高量化鲁棒性。下面的示例设计了一个具有阶梯阻带的低通滤波器。为了实现设计,它使用权重分布,使阻带中每一步的衰减增加5 dB:

N = 150;F = [0 .25 .3 .4 .401 .5 .501 .6 .601 .7 .701 .8 .801 .9 .901 1];A = [1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0];W = 10。^([0 0 5 5 10 10 15 15 20 20 25 25 30 30 35 35]/20);D = fdesign.arbmag(' N、F '、N、F);Hd1 =设计(d,“equiripple”“重量”W,“SystemObject”,真正的);

下面的例子给出了一种基于多频带方法的替代设计,该方法定义了两个频带(通带和阻带),由一个“不在乎”区域(或过渡带)隔开:

B = 2;%条带数F1 = f (1:2);%通频带F2 = F(3:结束);%阻带% F(2:3) =(。25.3] %过渡带A1 = a (1:2);A2 = A(3:结束);W1 = w (1:2);W2 = W(3:结束);D = fdesign.arbmag(”N, B, F,“A1, N, B, F1, F2, A2);Hd2 =设计(d,“equiripple”“B1Weights”W1,“B2Weights”W2,...“SystemObject”,真正的);hfvt = fvtool(Hd1,Hd2,“MagnitudeDisplay”“(dB)级”“传奇”“上”);传奇(hfvt“单波段设计”“多波段设计”);

{

请注意多波段方法的明显优势。通过放松过渡区域的约束,等纹波算法收敛到具有较低通带纹波和较大阻带衰减的解。也就是说,第一个滤波器的频率特性可以匹配到较低的阶数。下面的示例通过使用最小阶设计获得等效过滤器来说明最后的注释。

最小订货量设计要求每个波段有一个纹波值。在本例中,将所有波段的纹波设置为0.0195。

R = 0.0195;%单波段最小订货量设计D = fdesign.arbmag(“F, R”F, R);Hd1 =设计(d,“equiripple”“重量”W,“SystemObject”,真正的);%多波段最小订货量设计D = fdesign.arbmag(“B, F, A, R”, B, F1, A1, R, F2, A2, R);Hd2 =设计(d,“equiripple”“B1Weights”W1,“B2Weights”W2,...“SystemObject”,真正的);hfvt = fvtool(Hd1,Hd2);传奇(hfvt“单波段最小订购设计”...“多波段最小订单设计”);

{

两种设计的通带纹波和阻带衰减匹配。然而,单波段设计的数量级为152,而多波段设计的数量级为72。

订单(高清)
Ans = 32

约束多波段等纹波设计

多波段等纹波设计允许您为不同波段指定纹波约束,指定单频带,并强制指定频率点到指定值。

约束带设计

以下示例设计了一个80阶通带滤波器,其第一个阻带衰减为60 dB,第二个阻带衰减为40 dB。通过放松第二阻带的衰减,通带中的纹波减少,同时保持相同的滤波器顺序。

N = 80;百分比过滤顺序B = 3;频带数%D = fdesign.arbmag(' N, B, F, A, C ',N,B,[0 0.25],[0 0 0],true,...[0.3 0.6],[1 1],false,[0.65 1],[0 0],true)
d = arbmag与属性:响应:'任意幅度'规格:'N,B,F,A,C'描述:{4x1 cell} NormalizedFrequency: 1 FilterOrder: 80 NBands: 3 b1frequency: [0 0.2500] b1amplitude: [0 00] B1Constrained: 1 B1Ripple: 0.2000 b2frequency: [0.3000 0.6000] b2amplitude: [1 1 1] B2Constrained: 0 b3frequency: [0.6500 1] b3amplitude: [0 00] B3Constrained: 1 B3Ripple: 0.2000

B1ConstrainedB3Constrained属性已设置为true,以指定第一个和第三个频带为约束频带。属性指定第i个约束频带的纹波值BiRipple属性:

d.B1Ripple = 10^(-60/20);%第一个阻带衰减d.B3Ripple = 10^(-40/20);%第二阻带衰减Hd =设计(d,“equiripple”“SystemObject”,真正的)
Hd = dsp。结构:'直接形式'分子来源:'属性'分子:[-0.0036 0.0049 0.0052 -0.0022 -0.0097 -0.0044…显示所有属性
fvtool(高清“传奇”“关闭”);

{

单频乐队

下面的例子设计了一个最小阶等纹波滤波器,它有两个凹槽,正好在0.25*pi和0.55*pi rad/sample处,并且通带纹波为0.15。

B = 5;频带数%D = fdesign.arbmag(“B, F, A, R”, B);d. b1频率= [0 0.2];d. b1amplitude = [1 1];d.B1Ripple = 0.15;d. b2频率= 0.25;%单频带d. b2amplitude = 0;d. b3frequency = [0.3 0.5];d. b3amplitude = [1 1];d.B3Ripple = 0.15;d. b4frequency = 0.55;%单频带d. b4amplitude = 0;d. b5frequency = [0.6 1];d. b5amplitude = [1 1];d.B5Ripple = 0.15;Hd =设计(d,“equiripple”“SystemObject”,真正的);fvtool (Hd);

{

强制频率点

下面的示例设计了一个高通滤波器,其阻带边缘为100hz,通带边缘为150hz。假设您希望在不添加额外滤波器或不大量增加滤波器阶数的情况下拒绝强烈的60 Hz干扰。你可以通过强制高通滤波器的幅值响应在60 Hz时为0来做到这一点:

B = 2;频带数%N = 92;百分比过滤顺序Fs = 2e3;%采样频率D = fdesign.arbmag(”N, B, F,“,N,B,[0 60 100],[0 000],[150 1000],[1 1],Fs);

使用B1ForcedFrequencyPoints设计选项强制60赫兹点到其指定的振幅值。

Hd =设计(d,“equiripple”“B1ForcedFrequencyPoints”现年60岁的...“SystemObject”,真正的);hfvt = fvtool(Hd,“Fs”Fs);

{

放大高通滤波器的阻带,观察到在指定的60hz频率点上振幅为零:

hfvt。MagnitudeDisplay =“级”

{

单波段与多波段IIR设计

在FIR情况下,过渡波段不容易识别的IIR设计问题最好用单一(全)波段规范方法解决。例如,模拟气体(原子Rubidium87蒸汽)的光学吸收:

Nb = 12;Na = 10;F = linspace(0,1100);As = ones(1100)-F*0.2;吸收= [ones(1,30),(1-0.6*bohmanwin(10))',...(1、5),(1 - 0.5 * bohmanwin(8))的,(47)];A = As.*吸收;D = fdesign.arbmag(“Nb, Na, F,”Nb, Na, F);W = [ones(1,30) ones(1,10)*.]2人(1、60)];Hd =设计(d,“iirlpnorm”“重量”W,“规范”2,“DensityFactor”30岁的...“SystemObject”,真正的);fvtool(高清“MagnitudeDisplay”“(dB)级”...“NormalizedFrequency”“上”);

{

在其他可以在一个或多个过渡波段放松约束的情况下,多波段方法提供了与FIR情况相同的好处(即更好的通带和阻带特性)。下面的例子通过模拟瑞利衰落无线通信信道说明了这些差异:

Nb = 4;Na = 6;F = [0:0.01:0.4 .45 1];A = [1.0./(1-(F(1:end-2)./0.42).^2).^0.25 0 0];D = fdesign.arbmag(“Nb, Na, F,”Nb, Na, F);%单波段设计Hd1 =设计(d,“iirlpnorm”“SystemObject”,真正的);B = 2;F1 = F(1:end-2);%通频带F2 = F(end-1:结束);%阻带% F (end-2: end-1) =(。4.45] %过渡带A1 = A(1:end-2);A2 = A(end-1:end);D = fdesign.arbmag(“Nb, Na, B, F,“Nb, Na, B, F1, A1, F2, A2);%多波段设计Hd2 =设计(d,“iirlpnorm”“SystemObject”,真正的);hfvt = fvtool(Hd1,Hd2);传奇(hfvt“单波段设计”“多波段设计”);

{

Baidu
map