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

В этом примере показано, как постараться не искажать при субдискретизации сигнала. Если дискретное время основополосная спектральная поддержка сигнала не ограничивается интервалом ширины 2π/M радианы, прореживающие M результаты в искажении. Искажение является искажением, которое происходит, когда перекрывающиеся копии спектра сигнала добавляются вместе. Больше основополосная спектральная поддержка сигнала превышает 2π/M радианы, более серьезное искажение. Продемонстрируйте искажение в сигнале, прореженном два. Основополосная спектральная поддержка сигнала превышает π радианы по ширине.

Создайте сигнал с основополосной спектральной поддержкой, равной 3π/2 радианы. Используйте fir2 спроектировать сигнал. Постройте спектр сигнала. Основополосная спектральная поддержка сигнала превышает [-π/2,π/2].

f = [0 0.2500 0.5000 0.7500 1.0000];
a = [1.00 0.6667 0.3333 0 0];

nf = 512;
b1 = fir2(nf-1,f,a);
Hx = fftshift(freqz(b1,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')

Downsample сигнал на коэффициент 2 и график спектр прореженного сигнала со спектром исходного сигнала. В дополнение к амплитудному масштабированию спектра суперпозиция наложения спектральных копий вызывает искажение исходного спектра для |ω|>π/2.

y = downsample(b1,2,0);
Hy = fftshift(freqz(y,1,nf,'whole'));

hold on
plot(omega/pi,abs(Hy))
hold off
legend('Original','Downsampled')
text(2.5/pi*[-1 1],0.35*[1 1],{'\downarrow Aliasing','Aliasing \downarrow'}, ...
    'HorizontalAlignment','center')

Увеличьте основополосную спектральную поддержку сигнала к [-7π/8,7π/8] и проредите сигнал 2. Постройте исходный спектр наряду со спектром прореженного сигнала. Увеличенная спектральная ширина приводит к более явному искажению в спектре прореженного сигнала, потому что больше энергии сигнала находится вне [-π/2,π/2].

f = [0 0.2500 0.5000 0.7500 7/8 1.0000];
a = [1.00 0.7143 0.4286 0.1429 0 0];

b2 = fir2(nf-1,f,a);
Hx = fftshift(freqz(b2,1,nf,'whole'));

plot(omega/pi,abs(Hx))
grid
xlabel('\times\pi rad/sample')
ylabel('Magnitude')

y = downsample(b2,2,0);
Hy = fftshift(freqz(y,1,nf,'whole'));

hold on
plot(omega/pi,abs(Hy))
hold off
legend('Original','Downsampled')

Наконец, создайте сигнал с основополосной спектральной поддержкой, ограниченной [-π/2,π/2]. Downsample сигнал на коэффициент 2 и график спектр исходных и прореженных сигналов. Прореженный сигнал является полной полосой. Спектр прореженного сигнала является расширенной и масштабированной версией исходного спектра, но форма сохраняется, потому что спектральные копии не перекрываются. Нет никакого искажения.

f = [0 0.250 0.500 0.7500 1];
a = [1.0000 0.5000 0 0 0];

b3 = fir2(nf-1,f,a);
Hx = fftshift(freqz(b3,1,nf,'whole'));

plot(omega/pi,abs(Hx))
grid
xlabel('\times\pi rad/sample')
ylabel('Magnitude')

y = downsample(b3,2,0);
Hy = fftshift(freqz(y,1,nf,'whole'));

hold on
plot(omega/pi,abs(Hy))
hold off
legend('Original','Downsampled')

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

| |