fftfilt
overlap-add 방법을 사용하는 FFT 기반 FIR 필터링
설명
예제
입력 인수
출력 인수
세부 정보
알고리즘
fftfilt는 효율적인 FFT 기반 overlap-add[1] 방법을 사용하여 데이터를 필터링합니다. 이 방법은 주파수 영역에서 필터링된 입력 시퀀스의 연속적인 블록을 재조합하는 기법이며 FIR 필터에만 사용할 수 있습니다.
Nx개 요소를 가진 입력 신호 벡터 x와 N개 요소를 가진 필터 벡터 b가 있다고 가정해 보겠습니다. 여기서 b = [b1 b2 ⋯ bN]입니다. fftfilt에 의해 수행되는 연산은 시간 영역에서 다음과 같은 차분 방정식으로 표현됩니다.
동일한 표현으로 Z 변환 또는 주파수 영역 표현이 있습니다.
fftfilt 함수는 fft를 사용하여 overlap-add 방법을 구현합니다. fftfilt 함수는 입력 시퀀스 x를 길이가 L인 k개 데이터 블록으로 나눕니다. 여기서 L은 필터 길이 N보다 커야 하고, k = ⌈Nx/L⌉이며, ⌈⌉ 기호는 천장 함수(Ceiling function)를 나타냅니다.
이 함수는 다음을 통해 필터 b를 사용하여 각 블록을 컨벌루션합니다.
y = ifft(fft(x(i:i+L-1),nfft).*fft(b,nfft));
여기서 i = 1, L+1, 2L+1, ⋯이고 nfft는 FFT 길이입니다. fftfilt는 연속된 출력 섹션들을 N–1개 점만큼 중첩하고 이들을 더합니다.
fftfilt는 사용자가 필터 및 신호에 대해 FFT 길이 nfft를 지정하는지 여부에 따라 주요 파라미터인 L과 nfft를 다양한 방법으로 선택합니다.
FFT 길이를 결정하는
nfft의 값을 지정하지 않을 경우,fftfilt는 자동으로 다음 주요 파라미터를 선택합니다.length(x)가length(b)보다 크면,fftfilt는 블록 개수와 FFT별 플롭스 수를 곱한 값을 최소화하는 값을 선택합니다.length(b)가length(x)보다 크거나 같으면fftfilt는2^nextpow2(length(b) + length(x) - 1)길이를 갖는 단일 FFT를 사용합니다.이러한 가정을 통해
y가 다음과 같이 생성됩니다.y = ifft(fft(b,nfft).*fft(x,nfft))
nfft의 값을 지정할 경우,fftfilt는2^nextpow2(nfft)의 FFT 길이와nfft-length(b)+1의 데이터 블록 길이를 선택합니다.nfft가length(b)보다 작으면fftfilt는 FFT 길이로2^nextpow(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
