Этот пример показывает, как отфильтровать прежде, чем субдискретизировать, чтобы смягчить искажение, вызванное путем искажения. Можно использовать decimate
или resample
, чтобы отфильтровать и субдискретизировать с одной функцией. Также вы можете lowpass фильтровать ваши данные и затем использовать downsample
. Создайте сигнал с основополосной спектральной поддержкой, больше, чем радианы. Используйте decimate
, чтобы отфильтровать сигнал с 10-м порядком Чебышевский тип я, lowpass фильтруют до субдискретизации.
Создайте сигнал и постройте спектр значения.
F = [0 0.2500 0.5000 0.7500 1.0000]; A = [1.00 0.6667 0.3333 0 0]; Order = 511; B = fir2(Order,F,A); [Hx,W] = freqz(B,1,8192,'whole'); Hx = [Hx(4098:end) ; Hx(1:4097)]; omega = -pi+(2*pi/8192):(2*pi)/8192:pi; plot(omega,abs(Hx)) xlim([-pi pi]) grid title('Magnitude Spectrum') xlabel('Radians/Sample') ylabel('Magnitude')
Отфильтруйте сигнал с типом I 10-го порядка, который Чебышев lowpass фильтрует и субдискретизирует 2. Постройте спектры значения исходного сигнала наряду с отфильтрованным и субдискретизируемым сигналом.
y = decimate(B,2,10); [Hy,W] = freqz(y,1,8192,'whole'); Hy = [Hy(4098:end) ; Hy(1:4097)]; hold on plot(omega,abs(Hy),'r','linewidth',2) legend('Original Signal','Downsampled Signal')
Фильтр lowpass уменьшает объем искажения искажения вне интервала .