fftfilt
overlap-add 방법을 사용하는 FFT 기반 FIR 필터링
설명
예제
입력 인수
출력 인수
세부 정보
알고리즘
fftfilt
는 효율적인 FFT 기반 overlap-add[1] 방법을 사용하여 데이터를 필터링합니다. 이 방법은 주파수 영역에서 필터링된 입력 시퀀스의 연속적인 블록을 재조합하는 기법이며 FIR 필터에만 사용할 수 있습니다. fftfilt
에 의해 수행되는 연산은 시간 영역에서 다음과 같은 차분 방정식으로 표현됩니다.
동일한 표현으로 Z 변환 또는 주파수 영역 표현이 있습니다.
fftfilt
는 fft
를 사용하여 overlap-add 방법을 구현합니다. fftfilt
는 입력 시퀀스 x
를 길이가 L인 데이터 블록으로 나눕니다. 여기서 L은 필터 길이 N보다 커야 합니다.
그런 다음, 다음과 같이 필터 b
를 사용하여 각 블록을 컨벌루션합니다.
y = ifft(fft(x(i:i+L-1),nfft).*fft(b,nfft));
여기서 nfft
는 FFT 길이입니다. fftfilt
는 연속 출력 섹션을 n-1
개 점(n
은 필터 길이)만큼 중첩하고 해당 섹션의 합을 구합니다.
fftfilt
는 사용자가 필터 및 신호에 대해 FFT 길이 n
을 지정하는지 여부에 따라 주요 파라미터인 L
과 nfft
를 다양한 방법으로 선택합니다. FFT 길이를 결정하는 n
의 값을 지정하지 않을 경우, fftfilt
는 자동으로 다음 주요 파라미터를 선택합니다.
length(x)
가length(b)
보다 크면,fftfilt
는 블록 개수와 FFT별 플롭스 수를 곱한 값을 최소화하는 값을 선택합니다.length(b)
가length(x)
보다 크거나 같으면fftfilt
는 다음과 같은 길이를 갖는 단일 FFT를 사용합니다.2^nextpow2(length(b) + length(x) - 1)
이는 다음을 계산합니다.
y = ifft(fft(B,nfft).*fft(X,nfft))
n
의 값을 제공할 경우, fftfilt
는 2^nextpow2(n)
의 FFT 길이 nfft
와 nfft
- length(b)
+ 1
의 데이터 블록 길이를 선택합니다. n
이 length(b)
보다 작으면, fftfilt
는 n
을 length(b)
로 설정합니다.
참고 문헌
[1] Oppenheim, Alan V., Ronald W. Schafer, and John R. Buck. Discrete-Time Signal Processing. 2nd Ed. Upper Saddle River, NJ: Prentice Hall, 1999.
확장 기능
버전 내역
R2006a 이전에 개발됨
참고 항목
conv
| designfilt
| digitalFilter
| filter
| filtfilt