主要内容

cheby2

切比雪夫 II 型滤波器设计

说明

[b,a] = cheby2(n,Rs,Ws) 设计一个 n 阶低通数字切比雪夫 II 型滤波器,该滤波器具有归一化的阻带边缘频率 Ws以及从通带峰值下降 Rs 分贝的阻带衰减。cheby2 函数返回滤波器传递函数的分子系数和分母系数。

示例

[b,a] = cheby2(n,Rs,Ws,fType) 用于根据 fType 的值和 Ws 的元素数目,设计低通、高通、带通或带阻数字切比雪夫 II 型滤波器。由此得到的带通和带阻设计的阶数都为 2n

注意

设计传递函数阶数小至 4 的 IIR 滤波器时,可能会遇到数值不稳定的问题。有关影响传递函数形成的数值问题的更多信息,请参阅传递函数和 CTF

示例

[z,p,k] = cheby2(___) 用于设计数字切比雪夫 II 型滤波器,并返回其零点、极点和增益。此语法可包含上述语法中的任何输入参量。

示例

[A,B,C,D] = cheby2(___) 用于设计数字切比雪夫 II 型滤波器,并返回指定其状态空间表示的矩阵。

示例

[___] = cheby2(___,"s") 使用上述语法中的任何输入或输出参量设计模拟切比雪夫 II 型滤波器。

示例

[B,A] = cheby2(n,Rs,Ws,"ctf") 使用二阶级联传递函数 (CTF) 设计低通数字切比雪夫 II 型滤波器。该函数返回列出滤波器传递函数的分母和分子多项式系数的矩阵,表示为级联的滤波器节。与单节传递函数相比,这种方法生成的 IIR 滤波器具有更高的数值稳定性。 (自 R2024b 起)

示例

[___] = cheby2(n,Rs,Ws,fType,"ctf") 设计低通、高通、带通或带阻数字切比雪夫 II 型滤波器,并使用 CTF 格式返回滤波器表示。得到的设计节为 2 阶(低通和高通滤波器)或 4 阶(带通和带阻滤波器)。 (自 R2024b 起)

[___,gS] = cheby2(___) 还返回系统的总增益。您必须指定 "ctf" 才能返回 gS (自 R2024b 起)

示例

全部折叠

设计一个 6 阶低通切比雪夫 II 型滤波器,阻带衰减为 50 dB、阻带边缘频率为 300 Hz,对于以 1000 Hz 的速率采样的数据,阻带边缘频率对应于 0.6π 弧度/采样点。绘制其幅值和相位响应。用它对长度为 1000 个采样的随机信号进行滤波。

fc = 300;
fs = 1000;

[b,a] = cheby2(6,50,fc/(fs/2));

freqz(b,a,[],fs)

subplot(2,1,1)
ylim([-100 20])

Figure contains 2 axes objects. Axes object 1 with title Phase, xlabel Frequency (Hz), ylabel Phase (degrees) contains an object of type line. Axes object 2 with title Magnitude, xlabel Frequency (Hz), ylabel Magnitude (dB) contains an object of type line.

dataIn = randn(1000,1);
dataOut = filter(b,a,dataIn);

设计一个 6 阶切比雪夫 II 型带阻滤波器,归一化边缘频率为 0.2π0.6π 弧度/采样点,阻带衰减为 50 dB。绘制其幅值和相位响应。用它对随机数据进行滤波。

[b,a] = cheby2(3,50,[0.2 0.6],'stop');
freqz(b,a)

Figure contains 2 axes objects. Axes object 1 with title Phase, xlabel Normalized Frequency (\times\pi rad/sample), ylabel Phase (degrees) contains an object of type line. Axes object 2 with title Magnitude, xlabel Normalized Frequency (\times\pi rad/sample), ylabel Magnitude (dB) contains an object of type line.

dataIn = randn(1000,1);
dataOut = filter(b,a,dataIn);

设计一个 9 阶高通切比雪夫 II 型滤波器,阻带衰减为 20 dB、阻带边缘频率为 300 Hz,对于以 1000 Hz 的速率采样的数据,阻带边缘频率对应于 0.6π 弧度/采样点。将零点、极点和增益转换为二阶节。绘制幅值和相位响应。

[z,p,k] = cheby2(9,20,300/500,"high");
sos = zp2sos(z,p,k);

freqz(sos)
subplot(2,1,1)
ylim([-60 10])

Figure contains 2 axes objects. Axes object 1 with title Phase, xlabel Normalized Frequency (\times\pi rad/sample), ylabel Phase (degrees) contains an object of type line. Axes object 2 with title Magnitude, xlabel Normalized Frequency (\times\pi rad/sample), ylabel Magnitude (dB) contains an object of type line.

设计一个 20 阶切比雪夫 II 型带通滤波器,阻带频率下限为 500 Hz,阻带频率上限为 560 Hz。指定阻带衰减为 40 dB、采样率为 1500 Hz。使用状态空间表示。

fs = 1500;
[A,B,C,D] = cheby2(10,40,[500 560]/(fs/2));

将状态空间表示转换为二阶节。可视化频率响应。

sos = ss2sos(A,B,C,D);
freqz(sos,[],fs)

Figure contains 2 axes objects. Axes object 1 with title Phase, xlabel Frequency (Hz), ylabel Phase (degrees) contains an object of type line. Axes object 2 with title Magnitude, xlabel Frequency (Hz), ylabel Magnitude (dB) contains an object of type line.

使用 designfilt 设计一个相同的滤波器。可视化频率响应。

d = designfilt("bandpassiir",FilterOrder=20, ...
    StopbandFrequency1=500,StopbandFrequency2=560, ...
    StopbandAttenuation=40,SampleRate=fs);
freqz(d,[],fs)

Figure contains 2 axes objects. Axes object 1 with title Phase, xlabel Frequency (Hz), ylabel Phase (degrees) contains an object of type line. Axes object 2 with title Magnitude, xlabel Frequency (Hz), ylabel Magnitude (dB) contains an object of type line.

设计截止频率为 2 GHz 的五阶模拟巴特沃斯低通滤波器。乘以 2π 以将频率转换为弧度/秒。计算滤波器在 4096 个点上的频率响应。

n = 5;
wc = 2*pi*2e9;
w = 2*pi*1e9*logspace(-2,1,4096)';

[zb,pb,kb] = butter(n,wc,"s");
[bb,ab] = zp2tf(zb,pb,kb);
[hb,wb] = freqs(bb,ab,w);
gdb = -diff(unwrap(angle(hb)))./diff(wb);

设计一个具有相同边缘频率和 3 dB 通带波纹的五阶切比雪夫 I 型滤波器。计算它的频率响应。

[z1,p1,k1] = cheby1(n,3,wc,"s");
[b1,a1] = zp2tf(z1,p1,k1);
[h1,w1] = freqs(b1,a1,w);
gd1 = -diff(unwrap(angle(h1)))./diff(w1);

设计一个具有相同边缘频率和 30 dB 阻带衰减的 5 阶切比雪夫 II 型滤波器。计算它的频率响应。

[z2,p2,k2] = cheby2(n,30,wc,"s");
[b2,a2] = zp2tf(z2,p2,k2);
[h2,w2] = freqs(b2,a2,w);
gd2 = -diff(unwrap(angle(h2)))./diff(w2);

设计一个具有相同边缘频率和 3 dB 通带波纹、30 dB 阻带衰减的五阶椭圆滤波器。计算它的频率响应。

[ze,pe,ke] = ellip(n,3,30,wc,"s");
[be,ae] = zp2tf(ze,pe,ke);
[he,we] = freqs(be,ae,w);
gde = -diff(unwrap(angle(he)))./diff(we);

设计一个具有相同边缘频率的 5 阶贝塞尔滤波器。计算它的频率响应。

[zf,pf,kf] = besself(n,wc);
[bf,af] = zp2tf(zf,pf,kf);
[hf,wf] = freqs(bf,af,w);
gdf = -diff(unwrap(angle(hf)))./diff(wf);

对衰减绘图,以分贝为单位。以千兆赫为单位表示频率。比较滤波器。

fGHz = [wb w1 w2 we wf]/(2e9*pi);
plot(fGHz,mag2db(abs([hb h1 h2 he hf])))
axis([0 5 -45 5])
grid on
xlabel("Frequency (GHz)")
ylabel("Attenuation (dB)")
legend(["butter" "cheby1" "cheby2" "ellip" "besself"])

Figure contains an axes object. The axes object with xlabel Frequency (GHz), ylabel Attenuation (dB) contains 5 objects of type line. These objects represent butter, cheby1, cheby2, ellip, besself.

绘制采样中的群延迟。以千兆赫表示频率,以纳秒表示群延迟。比较滤波器。

gdns = [gdb gd1 gd2 gde gdf]*1e9;
gdns(gdns<0) = NaN;
loglog(fGHz(2:end,:),gdns)
grid on
xlabel("Frequency (GHz)")
ylabel("Group delay (ns)")
legend(["butter" "cheby1" "cheby2" "ellip" "besself"])

Figure contains an axes object. The axes object with xlabel Frequency (GHz), ylabel Group delay (ns) contains 5 objects of type line. These objects represent butter, cheby1, cheby2, ellip, besself.

巴特沃斯和切比雪夫 II 型滤波器具有平坦的通带和宽过渡带。切比雪夫 I 型和椭圆滤波器滚降更快,但有通带波纹。切比雪夫 II 型设计函数的频率输入设置阻带的起点,而不是通带的终点。贝塞尔滤波器沿通带具有大致恒定的群延迟。

设计一个 9 阶高通切比雪夫 II 型滤波器,截止频率为 300 Hz,采样率为 1000 Hz。阻带衰减为 40 dB。以级联二阶节形式返回滤波器系统的系数。

Wn = 300/(1000/2);
[B,A] = cheby2(9,40,Wn,"high","ctf")
B = 5×3

    0.5196   -0.5196         0
    0.5196   -0.6621    0.5196
    0.5196   -0.1266    0.5196
    0.5196    0.1806    0.5196
    0.5196    0.3066    0.5196

A = 5×3

    1.0000   -0.0765         0
    1.0000   -0.0238    0.0967
    1.0000    0.2707    0.3142
    1.0000    0.5763    0.5726
    1.0000    0.8128    0.8461

绘制滤波器的幅值响应。

filterAnalyzer(B,A)

输入参数

全部折叠

滤波器阶数,指定为小于或等于 500 的整数标量。对于带通和带阻设计,n 表示滤波器阶数的一半。

数据类型: double

相对于通带峰值的阻带衰减,指定为以分贝为单位表示的正标量。

如果您的设定 ℓ 采用线性单位,您可以使用 Rs = –20 log10ℓ 将其转换为分贝。

数据类型: double

阻带边缘频率,指定为标量或二元素向量。阻带边缘频率是滤波器幅值响应为 Rs 时的频率。更大的阻带衰减值 Rs 会导致更宽的过渡带。

  • 如果 Ws 是标量,则 cheby2 设计的是边缘频率为 Ws 的低通或高通滤波器。

    如果 Ws 是二元素向量 [w1 w2],其中 w1 < w2,则 cheby2 设计的是边缘频率下限为 w1 且边缘频率上限为 w2 的带通或带阻滤波器。

  • 对于数字滤波器,阻带边缘频率必须介于 0 与 1 之间,其中 1 对应于奈奎斯特速率(即采样率的一半)或 π 弧度/采样点。

    对于模拟滤波器,阻带边缘频率必须用弧度/秒表示,并且可以取任何正值。

数据类型: double

滤波器类型,指定为以下项之一:

  • "low" 指定阻带边缘频率为 Ws 的低通滤波器。"low" 是标量 Ws 的默认值。

  • "high" 指定阻带边缘频率为 Ws 的高通滤波器。

  • 如果 Ws 是二元素向量,则 "bandpass" 指定阶数为 2n 的带通滤波器。当 Ws 有两个元素时,"bandpass" 是默认值。

  • 如果 Ws 是二元素向量,则 "stop" 指定阶数为 2n 的带阻滤波器。

输出参量

全部折叠

滤波器的传递函数系数,以行向量形式返回。给定滤波器阶数 n,该函数返回具有 r 个采样的 ba,其中:对于低通和高通滤波器,r = n+1,对于带通和带阻滤波器,r = 2*n+1

传递函数用 b = [b1 b2br]a = [a1 a2ar] 表示,如下列各项之一所示:

  • H(z)=b1+b2z1++brz(r1)a1+a2z1++arz(r1) 用于数字滤波器。

  • H(s)=b1sr1+b2sr2++bra1sr1+a2sr2++ar 用于模拟滤波器。

数据类型: double

滤波器的零点、极点和增益,以两个列向量和一个标量形式返回。给定滤波器阶数 n,该函数返回具有 r 个采样的 zp,其中:对于低通和高通滤波器,r = n,对于带通和带阻滤波器,r = 2*n

传递函数用 z = [z1 z2zr]p = [p1 p2pr]k 表示,如下列各项之一所示:

  • H(z)=k(1z1z1)(1z2z1)(1zrz1)(1p1z1)(1p2z1)(1prz1) 用于数字滤波器。

  • H(s)=k(sz1)(sz2)(szr)(sp1)(sp2)(spr) 用于模拟滤波器。

数据类型: double

滤波器的状态空间表示,以矩阵形式返回。如果 r = n(对于低通和高通设计)或 r = 2n(对于带通和带阻滤波器),则 Ar×rBr×1,C 为 1×r,而 D 为 1×1。

状态空间矩阵通过以下方程组之一使状态向量 x、输入 u 和输出 y 相关。

  • 对于数字滤波器:

    x(k+1)=Ax(k)+Bu(k)y(k)=Cx(k)+Du(k).

  • 对于模拟滤波器:

    x˙=Ax+Buy=Cx+Du.

数据类型: double

自 R2024b 起

级联传递函数 (CTF) 系数,以行向量或矩阵形式返回。BA 分别列出级联传递函数的分子系数和分母系数。

BA 的大小分别为 L×(m +1) 和 L×(n +1)。该函数将 A 的第一列返回为 1,因此当 A 是行向量时,A(1)=1

  • L 表示滤波器节的数量。

  • m 表示滤波器分子的阶。

  • n 表示滤波器分母的阶。

cheby2 函数返回具有以下阶数设定的 CTF 系数:

  • m = n = 2 用于低通和高通滤波器。

  • m = n = 4 用于带通和带阻滤波器。

注意

要自定义 CTF 系数计算,例如在 CTF 系数中设置不同阶或自定义增益定标,请指定返回 z,p,k,然后使用 zp2ctf 获得 B,A

有关级联传递函数格式和系数矩阵的详细信息,请参阅以 CTF 格式返回数字滤波器

自 R2024b 起

总系统增益,以实数值标量形式返回。

  • 如果指定返回 gS,则 cheby2 函数会对分子系数进行归一化,使 B 的第一列为 1,并在 gS 中返回总系统增益。

  • 如果不指定返回 gS,则 cheby2 函数会使用 scaleFilterSections 函数将系统增益均匀分布在所有系统节上。

详细信息

全部折叠

算法

切比雪夫 II 型滤波器在通带中呈现单调性,在阻带中采用等波纹。II 型滤波器滚降不如 I 型滤波器快,但无通带波纹。

cheby2 使用一个五步算法:

  1. 它使用函数 cheb2ap 查找低通模拟原型的极点、零点和增益。

  2. 它将极点、零点和增益转换为状态空间形式。

  3. 如果需要,它使用状态空间变换将低通滤波器转换为具有所需频率约束的带通、高通或带阻滤波器。

  4. 对于数字滤波器设计,它使用 bilinear 通过具有频率预修正的双线性变换将模拟滤波器转换为数字滤波器。经过仔细调整频率,模拟滤波器和数字滤波器在 Wsw1w2 处具有相同的频率响应幅值。

  5. 根据需要,它将状态空间滤波器转换回传递函数或零极点增益形式。

参考

[1] Lyons, Richard G. Understanding Digital Signal Processing. Upper Saddle River, NJ: Prentice Hall, 2004.

扩展功能

全部展开

版本历史记录

在 R2006a 之前推出

全部展开