基于fft的FIR重叠加法滤波
fftfilt
利用高效的基于fft的方法对数据进行过滤交叠相加[1]一种频域滤波技术,它通过组合输入序列的连续频域滤波块,仅对FIR滤波器有效。执行的操作fftfilt
在时域由差分方程表示:
一个等效的表示是z变换或频域描述:
fftfilt
使用fft
实现重叠添加方法。fftfilt
中断输入序列x
到长度l数据块,l必须大于过滤器长度N。
并将每个块与滤波器进行卷积b
通过
y =传输线(fft (x(我+ l - 1), nfft)。* fft (b, nfft));
在哪里nfft
为FFT长度。fftfilt
重叠连续的输出部分n - 1
点,n
是过滤器的长度,并对它们求和。
fftfilt
选择关键参数l
和nfft
以不同的方式,这取决于您是否提供FFT长度n
对于滤波器和信号。如果没有指定值n
(决定FFT长度),fftfilt
自动选择这些关键参数:
如果长度(x)
大于长度(b)
,fftfilt
选择使块数量乘以每个FFT的flops数量最小的值。
如果长度(b)
大于或等于长度(x)
,fftfilt
使用一个长度的FFT
2^nextpow2(length(b) + length(x) - 1)
这个计算
y =传输线(fft (B, nfft)。* fft (X, nfft))
如果您为n
,fftfilt
选择一个FFT长度,nfft
的,2 ^ nextpow2 (n)
的数据块长度nfft
-长度(b)
+1
。如果n
小于长度(b)
,fftfilt
集n
来长度(b)
。
奥本海姆,艾伦V.,罗纳德W.谢弗,约翰R.巴克。离散时间信号处理。《上鞍河》第二版,南京:普伦提斯霍尔出版社,1999年。