Main Content

다운샘플링 — 에일리어싱

이 예제에서는 신호를 다운샘플링할 때 에일리어싱을 방지하는 방법을 보여줍니다. 이산시간 신호의 기저대역 스펙트럼 범위(spectral support)를 너비 2π/M 라디안인 구간으로 제한하지 않으면 인자 M으로 다운샘플링했을 때 에일리어싱이 발생합니다. 에일리어싱은 신호 스펙트럼의 겹쳐진 복사본이 더해질 때 발생하는 왜곡입니다. 신호의 기저대역 스펙트럼 범위가 2π/M 라디안을 많이 초과할수록 에일리어싱이 심해집니다. 인자 2로 다운샘플링한 신호에서 에일리어싱을 확인합니다. 신호의 기저대역 스펙트럼 범위가 너비 π 라디안을 초과합니다.

기저대역 스펙트럼 범위가 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')

Figure contains an axes object. The axes object with xlabel times pi blank rad/sample, ylabel Magnitude contains an object of type line.

신호를 인자 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')

Figure contains an axes object. The axes object with xlabel times pi blank rad/sample, ylabel Magnitude contains 4 objects of type line, text. These objects represent Original, Downsampled.

신호의 기저대역 스펙트럼 범위를 [-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')

Figure contains an axes object. The axes object with xlabel times pi blank rad/sample, ylabel Magnitude contains 2 objects of type line. These objects represent Original, Downsampled.

마지막으로, 기저대역 스펙트럼 범위를 [-π/2,π/2]로 제한한 신호를 생성합니다. 신호를 인자 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')

Figure contains an axes object. The axes object with xlabel times pi blank rad/sample, ylabel Magnitude contains 2 objects of type line. These objects represent Original, Downsampled.

참고 항목

| |