Этот пример показывает, как избежать сглаживания при понижающей дискретизации сигнала. Если спектральная поддержка основной полосы сигнала в дискретном времени не ограничена интервалом ширины радианы, понижающая дискретизация приводит к сглаживанию. Сглаживание - это искажение, которое происходит, когда перекрывающиеся копии спектра сигнала складываются вместе. Чем больше спектральная поддержка основной полосы сигнала превышает радианы, чем суровее сглаживание. Демонстрируйте сглаживание в сигнале с понижающей дискретизацией на два. Спектральная поддержка основной полосы сигнала превышает радианы в ширине.
Создайте сигнал с спектральной поддержкой основной полосы, равной радианы. Использование fir2
для разработки сигнала. Постройте график спектра сигнала. Спектральная поддержка основной полосы сигнала превышает .
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')
Уменьшите значение сигнала в 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')
Увеличьте спектральную поддержку основной полосы сигнала до и понижайте значение сигнала на 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 раза и постройте график спектра исходных и понижающих сигналов. Сигнал с понижающей дискретизацией - полная полоса. Спектр сигнала с понижающей дискретизацией является растянутой и масштабированной версией исходного спектра, но форма сохраняется, потому что спектральные копии не перекрываются. Сглаживания нет.
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')
downsample
| fir2
| freqz