切比雪夫一世还是切比雪夫二世?

信息处理 过滤器 频率 切比雪夫滤波器
2022-02-08 19:00:10

我是 DSP 新手,我正在尝试重新创建一些信号分析,

他们使用 chebyshev I 滤波器将 100Hz 信号转换为 50Hz 信号。虽然我目前使用的是 chebyshev II 过滤器,但是我对它们的工作原理以及它们之间的差异以及即使它们做同样的事情知之甚少。

所以我的问题是,首先,我过滤的切比雪夫究竟是如何减少我的信号的?其次,该工艺和切比雪夫 II 过滤器有什么区别,它们可以互换吗?(如果影响解释,我的背景是数学)

1个回答

在某些情况下,抽取操作包括在对数据进行下采样之前对数据进行低通滤波。Python scipy.signal.decimate、Matlab decimate: Filtering Before Downsampling甚至R [decimate](但它是从 Octave 借来的)中的标准是使用Chebyshev 类型 I(分别为 8、10 和 8 阶) )。

Matlab cheby1经典 IIR 滤波器类型的比较中 ,可以找到比较图,例如:

IIR 滤波器的比较图

基本上,切比雪夫滤波器旨在通过允许低通带(I 型)或高通带(II 型)中的波纹来提高低通性能,而在互补带中的行为是单调的。

使用Type I,您可以确保,如果高通频带中的两个频率分量具有相同的幅度,则滤波后最高频率幅度会更低,这可以在之后的下采样时得到安慰。使用 Type II,您可以在低通频带中获得相反的效果。

就个人而言(一种出柜,我很高兴得到我的同事的纠正):

  • 如果我的数据有精确的高频限制(尤其是讲座),并且我很确定截止频率,我倾向于使用 I 型
  • 如果我的数据非常不精确、嘈杂,并且我更关心低通带中的相对幅度,我倾向于使用类型 II(根据经验)来拒绝噪声,即使我失去了清晰度。

从 r bj 编辑: 请注意,在此修改后的图中,cheby2滤波器的阻带频率已调整,以便 -3.01 dB 截止频率与其他三个滤波器一致(我将其归一化为 1)。请注意,5 阶 I 型和 II 型 Tchebyshev 滤波器在从归一化频率 1 (通带)到 1.364(阻带)。

因此,如果您将苹果与苹果进行比较,那么 I 型和 II 型 Tchebyshev 滤波器在截止锐度方面具有相同的性能。I 型和 II 型之间的主要权衡是纹波在哪里。在 I 型中,纹波在通带中(我通常不想看到它),在 II 型中,纹波在阻带中(我通常不在乎)。

MATLAB代码:

clear;
close all;

N = 5;
f0 = 1;
w0 = 2*pi*f0;

passband_gain = 10*log10(0.5);          % -3.01 dB (half power)
stopband_gain = -30;                    % dB

% Design a 5th-order analog Butterworth lowpass filter with a cutoff 
% frequency of 1 Hz. Multiply by  to convert the frequency to radians per 
% second. Compute the frequency response of the filter at 4096 points.

[zb,pb,kb] = butter(N, w0, 's');
[bb,ab] = zp2tf(zb,pb,kb);
[hb,wb] = freqs(bb,ab,4096);

% Design a 5th-order Chebyshev Type I filter with the same edge frequency 
% and 3.01 dB of passband ripple.

[z1,p1,k1] = cheby1(N, -passband_gain, w0, 's');
[b1,a1] = zp2tf(z1,p1,k1);
[h1,w1] = freqs(b1,a1,4096);

% Design a 5th-order Chebyshev Type II filter with the passband edge  
% frequency and 30 dB of stopband attenuation.

w_stopband = w0*cosh((1/N)*acosh(sqrt(10^(-stopband_gain/10)-1)));
[z2,p2,k2] = cheby2(N, -stopband_gain, w_stopband, 's');
[b2,a2] = zp2tf(z2,p2,k2);
[h2,w2] = freqs(b2,a2,4096);

% Design a 5th-order elliptic filter with the same edge frequency, 3.01 dB  
% of passband ripple, and 30 dB of stopband attenuation.

[ze,pe,ke] = ellip(N, -passband_gain, -stopband_gain, w0,'s');
[be,ae] = zp2tf(ze,pe,ke);
[he,we] = freqs(be,ae,4096);

% Plot the gain in decibels. Compare the filters.

plot(wb/(2*pi),mag2db(abs(hb)))
hold on
plot(w1/(2*pi),mag2db(abs(h1)))
plot(w2/(2*pi),mag2db(abs(h2)))
plot(we/(2*pi),mag2db(abs(he)))
hold off
axis([0 3 -40 5])
grid
xlabel('Frequency')
ylabel('Gain (dB)')
legend('butter','cheby1','cheby2','ellip')