Этот пример показывает, как фильтровать перед понижающей дискретизацией, чтобы уменьшить искажение, вызванное сглаживанием. Можно использовать decimate
или resample
для фильтрации и downsample с одной функцией. Также можно lowpass фильтровать данные и затем использовать downsample
. Создайте сигнал с спектральной поддержкой основной полосы частот, большей, чем радианы. Использование decimate
для фильтрации сигнала фильтром I типа Чебышева 10-го порядка lowpass перед понижением дискретизации.
Создайте сигнал и постройте график величины спектра.
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')
Фильтрация сигнала с помощью lowpass Чебышева I типа 10-го порядка и downsample на 2. Постройте график спектров величины исходного сигнала вместе с фильтрованным и понижающим сигналом. Lowpass уменьшает количество искажений сглаживания за пределами интервала .
y = decimate(b,2,10); Hy = fftshift(freqz(y,1,nf,'whole')); hold on plot(omega/pi,abs(Hy)) legend('Original','Downsampled')