Субдискретизация — искажение

Этот пример показывает, как постараться не искажать при субдискретизации сигнала. Если дискретное время основополосная спектральная поддержка сигнала не ограничивается интервалом радианов ширины, субдискретизирующих результатами в искажении. Искажение является искажением, которое происходит, когда перекрывающиеся копии спектра сигнала добавляются вместе. Чем больше основополосная спектральная поддержка сигнала превышает радианы, тем более серьезный искажение. Продемонстрируйте искажение в сигнале, субдискретизируемом два. Основополосная спектральная поддержка сигнала превышает радианы по ширине.

Создайте сигнал с основополосной спектральной поддержкой, равной радианам. Используйте fir2, чтобы разработать сигнал. Постройте спектр сигнала.

F = [0 0.2500 0.5000 0.7500 1.0000];
A = [1.00 0.6667 0.3333 0 0];
Order = 511;
B1 = fir2(Order,F,A);
[Hx,W] = freqz(B1,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')

Вы видите, что основополосная спектральная поддержка сигнала превышает.

Субдискретизируйте сигнал фактором 2 и постройте спектр субдискретизируемого сигнала со спектром исходного сигнала.

y = downsample(B1,2,0);
[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')
text(-2.5,0.35,'\downarrow aliasing','HorizontalAlignment','center')
text(2.5,0.35,'aliasing \downarrow','HorizontalAlignment','center')
hold off

В дополнение к амплитудному масштабированию спектра суперпозиция наложения спектральных копий вызывает искажение исходного спектра для.

Увеличьте основополосную спектральную поддержку сигнала к и субдискретизируйте сигнал 2. Постройте исходный спектр наряду со спектром субдискретизируемого сигнала.

F = [0 0.2500 0.5000 0.7500 7/8 1.0000];
A = [1.00 0.7143 0.4286 0.1429 0 0];
Order = 511;
B2 = fir2(Order,F,A);

[Hx,W] = freqz(B2,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])

y = downsample(B2,2,0);
[Hy,W] = freqz(y,1,8192,'whole');
Hy = [Hy(4098:end) ; Hy(1:4097)];

hold on
plot(omega,abs(Hy),'r','linewidth',2)
grid
legend('Original Signal','Downsampled Signal')
xlabel('Radians/Sample')
ylabel('Magnitude')
hold off

Увеличенная спектральная ширина приводит к более явному искажению в спектре субдискретизируемого сигнала, потому что больше энергии сигнала снаружи.

Наконец, создайте сигнал с основополосной спектральной поддержкой, ограниченной. Субдискретизируйте сигнал фактором 2 и постройте спектр исходных и субдискретизируемых сигналов. Субдискретизируемый сигнал является полной полосой, но форма спектра сохраняется, потому что спектральные копии не накладываются. Нет никакого искажения.

F = [0 0.250 0.500 0.7500 1];
A = [1.0000 0.5000 0 0 0];
Order = 511;
B3 = fir2(Order,F,A);
[Hx,W] = freqz(B3,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])

y = downsample(B3,2,0);
[Hy,W] = freqz(y,1,8192,'whole');
Hy = [Hy(4098:end) ; Hy(1:4097)];

plot(omega,abs(Hx))
hold on
plot(omega,abs(Hy),'r','linewidth',2)
grid
legend('Original Signal','Downsampled Signal')
xlabel('Radians/Sample')
ylabel('Magnitude')
hold off

Вы видите в предыдущей фигуре, что форма спектра сохраняется. Спектр субдискретизируемого сигнала является расширенной и масштабированной версией спектра исходного сигнала, но нет никакого искажения.

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

| |

Для просмотра документации необходимо авторизоваться на сайте