Main Content

在下采样前进行滤波

此示例说明如何在下采样前进行滤波以减轻混叠造成的失真。您可以使用 decimateresample 以通过一个函数进行滤波和下采样。您也可以先对数据进行低通滤波,然后使用 downsample。创建基带频谱支持大于 π 弧度的信号。使用 decimate 以在下采样之前通过 10 阶切比雪夫 I 型低通滤波器对信号滤波。

创建信号并绘制幅值频谱。

f = [0 0.2500 0.5000 0.7500 1.0000];
a = [1.00 0.6667 0.3333 0 0];

nf = 512;
b = fir2(nf-1,f,a);
Hx = fftshift(freqz(b,1,nf,'whole'));

omega = -pi:2*pi/nf:pi-2*pi/nf;
plot(omega/pi,abs(Hx))
grid
xlabel('\times\pi rad/sample')
ylabel('Magnitude')

使用 10 阶切比雪夫 I 型低通滤波器对信号进行滤波,然后以 2 为因子下采样。绘制原始信号以及经过滤波和下采样的信号的幅值频谱。低通滤波器减少了区间 [-π/2,π/2] 之外的混叠失真量。

y = decimate(b,2,10);
Hy = fftshift(freqz(y,1,nf,'whole'));

hold on
plot(omega/pi,abs(Hy))
legend('Original','Downsampled')

另请参阅

| |