Фильтрация перед субдискретизацией

Этот пример показывает, как отфильтровать прежде, чем субдискретизировать, чтобы смягчить искажение, вызванное путем искажения. Можно использовать 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 уменьшает объем искажения искажения вне интервала [-π/2,π/2].

Смотрите также

| |