频域FIR滤波器
在频域对输入信号进行滤波
- 库:
DSP系统工具箱/过滤/过滤实现
描述
的频域FIR滤波器块实现了频域快速傅立叶变换(FFT)的滤波来过滤流输入信号。在时域中,滤波操作涉及到有限脉冲响应(FIR)滤波器的输入和脉冲响应之间的卷积。在频域,滤波操作涉及到输入的傅里叶变换和脉冲响应的傅里叶变换的乘法。随着脉冲响应的增大,频域滤波比时域滤波更有效。通过设置,可以直接在频域中指定滤波系数分子域来频率
.
该块使用重叠保存和重叠添加方法来执行频域滤波。对于具有较长脉冲响应长度的滤波器,这两种方法固有的延迟可能是显著的。为了减少这种延迟,可以使用频域FIR滤波器块将脉冲响应划分为较短的块,并在这些较短的块上实现重叠保存和重叠添加方法。要划分脉冲响应,请选择划分分子以减少延迟复选框。有关这两种方法以及通过脉冲响应分区减少延迟的详细信息,请参见算法.
港口
输入
x
-数据输入
向量|矩阵
数据输入,指定为向量或矩阵。该块支持可变大小的输入万博1manbetx信号。也就是说,即使在调用算法之后,您也可以更改输入帧的大小(行数)。然而,通道的数量(列的数量)必须保持不变。
该端口是未命名的,直到您选择从输入端口指定系数参数。
数据类型:单
|双
复数支持:万博1manbetx是的
全国矿工工会
-时域FIR滤波器系数
行向量
时域FIR滤波器系数,指定为行向量。
依赖关系
设置时将显示此端口分子域来时间
并选择从输入端口指定系数参数。
数据类型:单
|双
|int8
|int16
|int32
|uint8
|uint16
|uint32
复数支持:万博1manbetx是的
NUMFFT
-频域FIR滤波器系数
行向量
频域FIR滤波器系数,指定为行向量或矩阵。当你清理划分分子以减少延迟参数,通过该端口输入的系数必须是行向量。FFT长度等于输入向量的长度。当您选择划分分子以减少延迟参数,频率响应必须是2P——- - - - - -N矩阵,P是分区大小,和N是分区数。
依赖关系
设置时将显示此端口分子域来频率
并选择指定输入端口的频率响应参数。
数据类型:单
|双
|int8
|int16
|int32
|uint8
|uint16
|uint32
复数支持:万博1manbetx是的
输出参数
y
-过滤输出
向量|矩阵
过滤后的输出,作为向量或矩阵返回。输出的大小、数据类型和复杂性与输入相匹配。
该端口是未命名的,直到您选择输出过滤器延迟参数,单击应用.
数据类型:单
|双
复数支持:万博1manbetx是的
延迟
—过滤延时
正整数
筛选器延迟,作为标量返回。这种延迟是重叠添加和重叠保存方法固有的,不包括过滤器的组延迟。选项时才会出现此端口输出过滤器延迟复选框。
该端口是未命名的,直到您选择输出过滤器延迟复选框并单击应用.
数据类型:uint32
参数
频域滤波法
-频域滤波方法
Overlap-save
(默认)|交叠相加
在频域的滤波方法,指定为Overlap-save
或交叠相加
.有关这两种方法的详细信息,请参见算法
分子域
-分子域
时间
(默认)|频率
滤波器系数的域,指定为以下之一:
时间
中指定时域滤波系数滤波器系数参数或通过全国矿工工会输入端口。频率
中指定滤波器的频率响应频率响应参数或通过NUMFFT输入端口。
从输入端口指定系数
-标志指定低通滤波器系数
关闭(默认)|打开
当你选中这个复选框时,FIR滤波器系数通过端口输入,全国矿工工会.清除此复选框时,系数将在块对话框中通过滤波器系数参数。
若要查看筛选器响应,请清除此复选框,在块对话框上指定系数,然后单击视图过滤器响应按钮。
依赖关系
若要启用此参数,请设置分子域来时间
.
滤波器系数
-滤波系数
fir1》(100,0.3)
(默认)|行向量
FIR滤波器系数,指定为行向量。
依赖关系
若要启用此参数,请设置分子域来时间
并清除从输入端口指定系数参数。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
复数支持:万博1manbetx是的
指定输入端口的频率响应
-标志指定频域滤波器系数
关闭(默认)|打开
当你选中这个复选框时,频域的FIR滤波器系数通过端口输入,NUMFFT.清除此复选框时,系数将在块对话框中通过频率响应参数。
若要查看滤波器响应,请清除此复选框,在块对话框上指定频率响应,然后单击视图过滤器响应按钮。
依赖关系
若要启用此参数,请设置分子域来频率
.
频率响应
-过滤系数
fft (fir1(100, 0.3), 202年)
(默认)|行向量|矩阵
滤波器的频率响应,指定为行向量或矩阵。当你清理划分分子以减少延迟参数,频率响应一定是行向量。FFT的长度等于频率响应向量。当您选择划分分子以减少延迟参数,频率响应必须是2P——- - - - - -N矩阵,P是分区大小,和N是分区数。
依赖关系
若要启用此参数,请设置分子域来频率
并清除指定输入端口的频率响应参数。
数据类型:单
|双
|int8
|int16
|int32
|uint8
|uint16
|uint32
复数支持:万博1manbetx是的
划分分子以减少延迟
- Flag划分分子以减少延迟
关闭(默认)|打开
标志划分分子以减少延迟,指定为以下之一:
off—过滤器使用传统的重叠保存或重叠添加方法。这种情况下的延迟是FFT长度-NumLen+ 1。NumLen分子向量的长度是滤波器系数参数。
on——在此模式下,块将分子划分为长度由分子划分长度参数。过滤器在每个分区上执行重叠保存或重叠添加,并将部分结果组合成整体输出。延迟现在减少到分区长度。
分子划分长度
-分子的划分长度
32
(默认)|正整数
分子的分割长度,指定为小于或等于分子长度的正整数。
依赖关系
该参数仅在进行设置时有效分子域来时间
并选择划分分子以减少延迟参数。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
时域分子长度
-时域分子长度
101
(默认)|正整数值标量
时域分子长度,指定为正整数值标量。
依赖关系
该参数仅在进行设置时有效分子域来频率
并清除划分分子以减少延迟复选框。
数据类型:单
|双
|int8
|int16
|int32
|uint8
|uint16
|uint32
从分子长度继承FFT长度
标记从分子长度继承FFT长度
On(默认)| off
当选中此复选框时,FFT长度等于分子长度的两倍。清除此复选框时,通过FFT长度参数。
依赖关系
该参数仅在进行设置时有效分子域来时间
并清除划分分子以减少延迟参数。
FFT长度
- FFT长度
1024
(默认)|正整数
中指定的FFT长度必须大于或等于分子向量的长度滤波器系数参数。
依赖关系
该参数在设置时生效分子域来时间
,清除划分分子以减少延迟和从分子长度继承FFT长度参数。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
Filter是真实的
-标志指定过滤器是否为实
真正的
(默认)|假
标志来指定筛选器是否为实值,指定为真正的
或假
.
依赖关系
此参数适用于以下情况:分子域来频率
.
输出过滤器延迟
-标志输出过滤器延迟
“关闭”
(默认)|“上”
当您选中此复选框并单击时应用,块通过延迟端口。
视图过滤器响应
-可视化FIR滤波器的频率响应
按钮
打开滤波器可视化工具(FVTool),显示FIR滤波器的幅度/相位响应。响应基于块对话框参数。对这些参数的更改会更新FVTool。
要在FVTool运行时更新震级响应,请修改块对话框参数并单击应用.
时查看筛选器响应分子域设置为时间
,清除从输入端口指定系数复选框。时查看筛选器响应分子域设置为频率
,清除指定输入端口的频率响应复选框。
模拟使用
-要运行的模拟类型
代码生成
(默认)|解释执行
代码生成
-使用生成的C代码模拟模型。你第一次运行模拟器,Simulink万博1manbetx®生成该块的C代码。C代码可用于后续的模拟,只要模型不变。此选项需要额外的启动时间,但提供更快的模拟速度解释执行
.解释执行
-利用MATLAB对模型进行仿真®翻译。该选项缩短了启动时间,但模拟速度较慢代码生成
.
算法
重叠保存和重叠添加是该算法采用的两种基于频域fft的滤波方法。
Overlap-Save
重叠保存方法的实现方法如下:
输入流被划分为重叠的大小块FFTLen,其重叠因子为NumLen- 1个样本。FFTLen是FFT长度和NumLen为FIR滤波器分子的长度。计算每个输入样本块的FFT并与长度-相乘FFTLenFIR分子的FFT。对结果进行快速傅里叶反变换(IFFT),最后FFTLen- - - - - -NumLen保存+ 1个样本。剩下的样本被丢弃。
重叠保存时延为FFTLen- - - - - -NumLen+ 1。第一个FFTLen- - - - - -NumLen+ 1个样本等于0。第一个输入样例的过滤值显示为FFTLen- - - - - -NumLen+ 2输出样本。
注意,FFT长度必须大于分子长度,通常设置为远大于分子长度的值NumLen.
交叠相加
重叠添加方法的实现方法如下:
输入流被划分为长度块FFLen- - - - - -NumLen+ 1,连续块之间没有重叠。类似于重叠保存,计算块的FFT,并乘以FIR分子的FFT。然后计算结果的IFFT。第一个NumLen+ 1个样本通过加最后一个的值来修改NumLen+ 1个样本来自之前计算的IFFT。
重叠添加延迟为FFTLen- - - - - -NumLen+ 1。第一个FFTLen- - - - - -NumLen+ 1个样本等于0。第一个输入样例的过滤值显示为FFTLen- - - - - -NumLen+ 2输出样本。
通过脉冲响应分区减少延迟
当FFT长度是FIR分子长度的两倍时,延迟大致等于FIR分子的长度。如果脉冲响应很长,延迟就会显著变大。然而,频域FIR滤波仍然比时域滤波快。为了减少延迟,提高频域滤波效率,该算法将脉冲响应划分为多个短块,并对每个块进行重叠保存或重叠添加。然后将不同块的结果进行组合,得到最终的输出。这种方法的延迟是块长度的顺序,而不是整个脉冲响应长度。延迟的减少是以额外的计算为代价的。有关更多细节,请参见[1].
参考文献
[1]小T. G.斯托克汉姆"高速卷积与相关"1966年春季联合计算机会议论文集,AFIPS, 28(1966): 229-233。
扩展功能
C/ c++代码生成
使用Simulink®Coder™生成C和c++代码。万博1manbetx
另请参阅
系统对象
块
在R2017b中引入
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。万博1manbetx
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。