Engee 文档

FIR 插值

利用 FIR 滤波器进行多相插值。

类型: FIRInterpolation

图书馆中的路径:

/Signal Operations/Filters/MultirateFilters/FIR Interpolation

说明

*FIR 插值*块在第一次测量时使用整数插值因子 执行高效的多相插值。

从概念上讲,使用有限脉冲响应滤波器(FIR 滤波器,FIR)进行插值表示将频率提升 ,然后应用重构 FIR 滤波器,该滤波器通常是理想带限插值滤波器的近似值。

将输入信号每个通道的采样率提高到更高的频率,是通过在采样之间添加 0 来实现的。FIR 滤波器对转换数据的每个通道进行滤波。由此产生的采样信号的采样率是原始采样率的 倍。

fir interpolation 1

然而,实际的分块算法实现的是直接形式 FIR 滤波器的多相结构,即图中所示组合系统的有效等价物。更多详情见第…​…​节。 [Алгоритмы].

如果*速率选项*参数设置为 "强制单速率处理",*FIR 插值*块可在触发子系统中使用。

端口

输入

输入 - 输入数据
标量 | 向量 | 矩阵

为指定为向量或矩阵的数据块输入数据。

数据类型: Float16, Float32, Float64, Int8, Int16, Int32, Int64, UInt8, UInt16, UInt32, UInt64

*支持复数:是

Num - 滤波传递函数分子的系数
矢量

以向量形式输入 FIR 滤波器分子系数的端口。

FIR 滤波器的传递函数 定义为

为了作为有效的重构滤波器使用,系数通常对应于低通滤波器,其归一化截止频率值不大于插值系数的倒数。

系数的值是可调的。也就是说,它们的值可以在建模过程中改变,而它们的属性,如大小、数据类型和复杂程度则保持不变。

依赖关系

要使用此端口,请将 Coefficient source 参数设置为 "输入端口"。

数据类型: Float16, Float32, Float64, Int8, Int16, Int32, Int64, UInt8, UInt16, UInt32, UInt64

*支持复数:是

输出

Out - 插值后的输出数据
标量 | 向量 | 矩阵

插值后的输出数据,以标量、向量或矩阵形式返回。

块行为取决于 Rate options 参数的值:

  • 强制单速率处理"--选择此值时,程序块将保持输入采样率并对信号进行细分,输出帧大小将增加 倍。

  • 允许多速率处理"--选择此值时,程序块将对信号进行内插,使输出采样率为输入采样率的 倍。

数据类型: Float16, Float32, Float64, Int8, Int16, Int32, Int64, UInt8, UInt16, UInt32, UInt64

*支持复数:是

参数

系数源 - 系数设置方法
对话框参数(默认) | `输入端口

如果参数的值为 "对话框参数",则滤波系数在参数设置窗口中设置。如果参数值为 "输入端口",则通过输入端口 Num 设置滤波器系数。

FIR 滤波器系数 - 低频 FIR 滤波器系数
[0; -0.000129061486199961;-0.000228040316280948; 0; 0.000554613738572437; 0.000802607430267054; 0; -0.00152912350278902; -0.00203638780675590; 0; 0.00342230705979440; 0.00433928347039265; 0; -0.00673109372352446; -0.00825637814441869; 0; 0.0121125402586868; 0.0145130044012328; 0; -0.0204721583515830; -0.0241392529239787; 0; 0.0332125142618354; 0.0388230898504630; 0; -0.0529640018790903; -0.0619837024555044; 0; 0.0860610417481775; 0.102712774109103; 0; -0.154048515452570; -0.197567026018057; 0; 0.408837525145054; 0.824655115145336; 1; 0.824655115145336; 0.408837525145054; 0; -0.197567026018057; -0.154048515452570; 0; 0.102712774109103; 0.0860610417481775; 0; -0.0619837024555044; -0.0529640018790903; 0; 0.0388230898504630; 0.0332125142618354; 0; -0.0241392529239787; -0.0204721583515830; 0; 0.0145130044012328; 0.0121125402586868; 0; -0.00825637814441869; -0.00673109372352446; 0; 0.00433928347039265; 0.00342230705979440; 0; -0.00203638780675590; -0.00152912350278902; 0; 0.000802607430267054; 0.000554613738572437; 0; -0.000228040316280948; -0.000129061486199961] (默认) | vector.

指定 FIR 滤波传递函数分子的系数


为了作为有效的重构滤波器使用,通常会选择与低通滤波器相对应的系数,其归一化截止频率值不大于插值系数的倒数。

该模块将所有滤波器状态初始化为零。

依赖关系

要使用该参数,请将*系数源*参数设置为 "对话框参数"。

数据类型: Float16, Float32, Float64, Int8, Int16, Int32, Int64, UInt8, UInt16, UInt32, UInt64

*支持复数:是

插值因子 - 插值因子
3(默认)` |`正标量

指定一个整数系数 。程序块将根据该系数提高输入序列的采样率。

数据类型: Int8, Int16, Int32, Int64

输入处理 - 输入信号处理类型
列作为通道(基于帧)` | 元素作为通道(基于采样)` - 输入信号处理类型

指定块是执行基于采样的处理还是基于帧的处理。可选择的选项:

  • 元素作为通道(基于采样)"- 输入信号的每个元素都被视为一个独立通道(基于采样的处理)。

  • 列作为通道(基于帧)"- 输入信号的每一列都被视为一个独立通道(基于帧的处理)。

速率选项 - 块对输入数据进行插值的方法
强制单速率处理(默认)` | 允许多速率处理`。

指定块对输入数据进行插值的方法。可选择的选项:

  • 强制单速率处理"--选择此方法时,数据块将保留输入信号的采样率并对信号进行插值,从而使输出帧的大小增加一个系数 。要选择此方法,*输入处理*参数必须设置为 "列作为通道(基于帧)"。

  • 允许多通道处理"--选择此方法时,块会对信号进行内插,使输出采样率 是输入采样率的 倍。

更多信息

基于框架的处理

当*输入处理*设置为 "列作为通道(基于帧)"时,设备会对输入信号的每一列进行及时的重新采样。在这种模式下,程序块可以执行单速率或多速率处理。您可以使用*速率选项*参数来指定块将如何对输入数据重新采样:

  • 如果*速率选项*参数设置为 "强制单速率处理",则程序块的输入和输出数据具有相同的采样速率。为了在保留输入数据采样率的同时对输出数据进行插值,程序块会重新计算输入数据每一列中的数据,使输出数据帧大小 ( ) 是输入数据帧大小 ( ) 的 倍。

  • 如果*速率选项*设置为 "允许多通道处理",则 FIR 滤波插值的输入和输出数据大小相同。但是,输出数据的采样率是输入数据采样率的 倍。在此模式下,程序块将输入矩阵 视为 独立通道。程序块对输入信号的每一列进行时间插值,保持帧大小不变( = ),输出帧( )的周期是输入帧( )周期的 倍。

基于采样的处理

如果*输入处理*被设置为 "元素作为通道(基于采样)",则程序块会将输入矩阵 视为 独立通道,并对每个通道进行时间插值。输出采样周期 ( ) 比输入采样周期 ( ) 短 倍,而输入和输出数据大小保持一致。

算法

使用多相结构可有效实现 FIR 滤波器插值。

为了推导多相结构,我们首先要定义 FIR 滤波器的传递函数:

其中 是 FIR 滤波器的长度。

我们可以将这个等式重新排列如下

其中 是多相分量的数量,其值等于参数设置窗口中设置的插值系数。

我们可以将该等式写成

其中 , , …​, 是 FIR 滤波器 的多相分量。

从概念上讲,FIR 滤波器插值由一个插值系数和一个低通 FIR 滤波器组成

fir interpolation 1

让我们用它的多相表示法取代

fir interpolation 3

在此介绍多元插值的特性。

fir interpolation 4

应用内插法的特性可将零采样插入操作移至滤波操作之后。这样可以降低信号滤波的速度。

fir interpolation 5

你可以用一个开关来代替零采样插入运算器、延迟块和加法器。开关从第一个分支 0 开始,逆时针方向移动,每次从每个分支获取一个采样。插值器实际上是为接收到的每个输入样本输出 样本。因此,FIR 滤波插值输出的采样率为

fir interpolation 6

参考文献

  1. Fliege, N. J. Multirate Digital Signal Processing: Multirate Systems, Filter Banks, Wavelets. West Sussex, England: John Wiley & Sons, 1994.

  2. Orfanidis, Sophocles J.Introduction to Signal Processing. Upper Saddle River, NJ: Prentice-Hall, 1996.