fftfilt
基于fft的重叠相加法FIR滤波
语法
描述
例子
输入参数
输出参数
更多关于
算法
fftfilt
使用高效的基于fft的方法对数据进行过滤交叠相加[1],一种频域滤波技术,通过组合输入序列的连续频域滤波块,仅适用于FIR滤波器。执行的操作fftfilt
在时域由差分方程描述:
等效的表示是z变换或频域描述:
fftfilt
使用fft
实现重叠添加方法。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
选择关键参数l
而且nfft
以不同的方式,这取决于你是否提供FFT长度n
用于滤波器和信号。如果没有指定值n
(决定FFT长度),fftfilt
自动选择以下关键参数:
如果
长度(x)
大于长度(b)
,fftfilt
选择最小化每个FFT的块数乘以flops数的值。如果
长度(b)
大于或等于长度(x)
,fftfilt
使用一个长度的FFT2^nextpow2(长度(b) +长度(x) - 1)
这个计算
y = ifft(fft(B,nfft).*fft(X,nfft))
如果你提供一个值n
,fftfilt
选择FFT长度,nfft
的,2 ^ nextpow2 (n)
和一个数据块的长度nfft
-长度(b)
+1
.如果n
小于长度(b)
,fftfilt
集n
来长度(b)
.
参考文献
奥本海姆、艾伦五世、罗纳德·w·谢弗和约翰·r·巴克。离散时间信号处理.第二版。上马鞍河,新泽西州:普伦蒂斯大厅,1999年。