Main Content

다운샘플링 전에 필터링하기

이 예제에서는 다운샘플링 전에 필터링을 수행하여 에일리어싱으로 인한 왜곡을 완화하는 방법을 보여줍니다. decimate 또는 resample을 사용하여 함수 하나로 필터링과 다운샘플링을 모두 수행할 수 있습니다. 또한 데이터에 저역통과 필터를 적용한 후에 downsample을 사용할 수도 있습니다. 기저대역 스펙트럼 범위가 π 라디안보다 큰 신호를 생성합니다. decimate를 사용하여 다운샘플링 전에 10차 체비쇼프 유형 I 저역통과 필터로 신호를 필터링합니다.

신호를 생성하고 크기 스펙트럼을 플로팅합니다.

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

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

10차 체비쇼프 유형 I 저역통과 필터로 신호를 필터링하고 인자 2로 다운샘플링합니다. 원래 신호의 크기 스펙트럼과 필터링 및 다운샘플링된 신호의 크기 스펙트럼을 함께 플로팅합니다. 저역통과 필터가 구간 [-π/2,π/2] 바깥에서 발생하는 에일리어싱 왜곡의 양을 감소시킵니다.

y = decimate(b,2,10);
Hy = fftshift(freqz(y,1,nf,'whole'));

hold on
plot(omega/pi,abs(Hy))
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.

참고 항목

| |