다운샘플링 전에 필터링하기
이 예제에서는 다운샘플링 전에 필터링을 수행하여 에일리어싱으로 인한 왜곡을 완화하는 방법을 보여줍니다. 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')
10차 체비쇼프 유형 I 저역통과 필터로 신호를 필터링하고 인자 2로 다운샘플링합니다. 원래 신호의 크기 스펙트럼과 필터링 및 다운샘플링된 신호의 크기 스펙트럼을 함께 플로팅합니다. 저역통과 필터가 구간 바깥에서 발생하는 에일리어싱 왜곡의 양을 감소시킵니다.
y = decimate(b,2,10); Hy = fftshift(freqz(y,1,nf,'whole')); hold on plot(omega/pi,abs(Hy)) legend('Original','Downsampled')