在下采样前进行滤波
此示例说明如何在下采样前进行滤波以减轻混叠造成的失真。您可以使用 decimate
或 resample
以通过一个函数进行滤波和下采样。您也可以先对数据进行低通滤波,然后使用 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 为因子下采样。绘制原始信号以及经过滤波和下采样的信号的幅值频谱。低通滤波器减少了区间 之外的混叠失真量。
y = decimate(b,2,10); Hy = fftshift(freqz(y,1,nf,'whole')); hold on plot(omega/pi,abs(Hy)) legend('Original','Downsampled')