主要内容

任意幅值滤波器设计

此示例演示如何设计具有任意幅度响应的滤波器。滤波器设计系列(FDESIGN)对象允许设计具有各种响应类型的过滤器。在这些类型中,任意大小是不太专业且用途最广泛的一种。下面的示例说明了当其他响应类型发现限制时,任意大小的设计如何解决问题。

频率采样法FIR建模

本节演示了一个示例,其中滤波器的振幅定义在完整的Nyquist范围内(没有松弛或“不关心”区域)。下面的例子使用单(全)频带规格类型和鲁棒频率采样算法来设计一个振幅定义在三个部分的滤波器:正弦部分、分段线性部分和二次部分。因为过滤器的形状比较复杂,所以选择较大的过滤器顺序是必要的:

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 +(2 * 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,A);Hd=设计(d,“freqsamp”“SystemObject”,真正的);fvtool(高清“MagnitudeDisplay”“零”“颜色”“白色”);

Figure Filter Visualization Tool-Zero phase Response包含一个轴对象和uitoolbar、uimenu类型的其他对象。标题为Zero phase Response的轴对象包含两个line类型的对象。

关闭(gcf)

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

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

图形过滤器可视化工具-幅度响应(dB)包含一个轴对象和其他类型的uitoolbar, uimenu对象。标题为“大小响应(dB)”的轴对象包含2个类型为line的对象。

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

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

F = linspace (0, 1100);一个= exp(2 *π* F);R = 0.045;%的涟漪W = .1-20 * log10 (abs (A));%的重量d = fdesign.arbmag (“F, R”F, R);高清=设计(d,“equiripple”“重量”W“SystemObject”,真正的);fvtool(高清“MagnitudeDisplay”“零”“频率范围”“[0,π)”...“颜色”“白色”);

Figure Filter Visualization Tool-Zero phase Response包含一个轴对象和uitoolbar、uimenu类型的其他对象。标题为Zero phase Response的轴对象包含两个line类型的对象。

单波段与多波段Equiripple 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];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,A);Hd1=设计(d,“equiripple”“重量”W“SystemObject”,真正的);

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

B = 2;%频带数F1 = F (1:2);%通频带F2 = F(3:结束);%阻带% F(2:3) =(。25.3] %过渡带A1 = (1:2);A2 =(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,“单波段设计”“多波段设计”);

图形过滤器可视化工具-幅度响应(dB)包含一个轴对象和其他类型的uitoolbar, uimenu对象。标题为“大小响应(dB)”的轴对象包含2个类型为line的对象。这些对象代表了单波段设计,多波段设计。

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

最小订单设计要求每个频带有一个纹波值。对于本例,将所有波段的纹波设置为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,“单波段最低订单设计”...“多波段最低订购量设计”);

图形过滤器可视化工具-幅度响应(dB)包含一个轴对象和其他类型的uitoolbar, uimenu对象。标题为“大小响应(dB)”的轴对象包含2个类型为line的对象。这些对象分别代表了单频带最小订单设计和多频带最小订单设计。

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

订单(高清)
ans = 32

受限多频带Equiripple设计

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

约束带的设计

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

N=80;%过滤顺序B = 3;频带百分数d = fdesign.arbmag (' N, B, F, A, C '0.25 N B[0],[0 0],真的,...[0.3 0.6],[1 1],false,[0.65 1],[0 0],true)
描述:{4x1 cell} NormalizedFrequency: 1 FilterOrder: 80 nband: 3 b1frequency: [0 0.2500] b1amplitude: [0 0] B1Constrained: 1 B1Ripple: 0.2000 B2Frequencies: [0.3000 0.6000] b2amplitude: [1 1] B2Constrained: 0 B3Frequencies: [0.6 6500 1] b3amplitude: [1 1] B1Constrained: 0 B3Frequencies: [0.6 6500 1] b3amplitude:[0 0] B3Constrained: 1 B3Ripple: 0.2000

B1ConstrainedB3Constrained属性被设置为true以指定第一和第三个波段是受约束的波段。的值指定第i个约束频带的纹波值BiRipple财产:

d、 b1纹波=10^(-60/20);%第一个阻带衰减d、 B3纹波=10^(-40/20);%第二阻带衰减高清=设计(d,“equiripple”“SystemObject”,真正的)
高清= dsp。FIRFilter与属性:结构:'直接形式' NumeratorSource: 'Property' Numerator:[-0.0036 0.0049 0.0052 -0.0022 -0.0097 -0.0044…InitialConditions: 0显示所有属性
fvtool(高清“传奇”“关闭”“颜色”“白色”);

图形过滤器可视化工具-幅度响应(dB)包含一个轴对象和其他类型的uitoolbar, uimenu对象。标题为“大小响应(dB)”的轴对象包含2个类型为line的对象。

单频乐队

下面的例子设计了一个最小阶等纹波滤波器,它有两个陷波点,分别为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. b1振幅= [1 1];d.B1Ripple = 0.15;d.B2Frequencies = 0.25;%单频段d.B2Amplitudes = 0;d.B3Frequencies = [0.3 0.5];d. b3amplitude = [1 1];d.B3Ripple = 0.15;d.B4Frequencies = 0.55;%单频段d.B4Amplitudes = 0;d. b5频率= [0.6 1];d. b5振幅= [1 1];d.B5Ripple = 0.15;高清=设计(d,“equiripple”“SystemObject”,真正的);fvtool(高清“颜色”“白色”);

图形过滤器可视化工具-幅度响应(dB)包含一个轴对象和其他类型的uitoolbar, uimenu对象。标题为“大小响应(dB)”的轴对象包含2个类型为line的对象。

强迫频率点

下面的例子设计了一个带阻边为100hz,带通边为150hz的高通滤波器。假设您想要拒绝强60hz干扰,而不需要添加额外的滤波器或不需要大量增加滤波器的阶数。你可以通过强制高通滤波器在60hz的幅度响应为0来做到这一点:

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

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

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

图形过滤器可视化工具-幅度响应(dB)包含一个轴对象和其他类型的uitoolbar, uimenu对象。标题为“大小响应(dB)”的轴对象包含2个类型为line的对象。

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

hfvt。MagnitudeDisplay =“级”;xlim([0 100])ylim([0 0.015])

图形过滤器可视化工具-幅度响应包含一个轴对象和其他类型的uitoolbar, uimenu对象。标题为“大小响应”的轴对象包含两个类型为line的对象。

单波段与多波段IIR设计

在FIR的情况下,过渡频带不易识别的IIR设计问题最好通过单一(完整)频带规范方法解决。例如,对气体(原子铷87蒸汽)的光吸收进行建模:

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

图形过滤器可视化工具-幅度响应(dB)包含一个轴对象和其他类型的uitoolbar, uimenu对象。标题为“大小响应(dB)”的轴对象包含2个类型为line的对象。

在可以在一个或多个过渡频带中放松约束的其他情况下,多频带方法提供与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];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,“单波段设计”“多波段设计”);

图形过滤器可视化工具-幅度响应(dB)包含一个轴对象和其他类型的uitoolbar, uimenu对象。标题为“大小响应(dB)”的轴对象包含2个类型为line的对象。这些对象代表了单波段设计,多波段设计。