AnyMath 文档

工程师。Lms过滤器

使用最小二乘法(Lms)计算输出、误差和系数。

库::`工程师` 座:: LMS Filter

资料描述

系统对象*EngeeDSP。LMSFilter*实现自适应有限脉冲响应滤波器(FIR滤波器),使用以下算法之一确保输入信号与所需信号的收敛: *LMS;

*归一化LMS;

*签名数据LMS; *Sign-Error LMS;

*签-签LMS。

有关这些算法的详细信息,请参阅算法。

滤波器调整其权重,直到参考输入信号和期望信号之间的误差最小。

要使用自适应FIR滤波器对信号进行滤波,请按照以下步骤操作:

  1. 创建*EngeeDSP。LMSFilter*对象并设置其属性。

  2. 用参数调用对象,就好像它是一个函数一样。

若要了解有关如何使用系统对象的详细信息,请参阅 AnyMath系统对象.

语法

创造

  • lms=EngeeDSP。Lms过滤器() -返回自适应FIR滤波器系统对象 lms,它使用最小二乘算法(Lms)计算给定输入和所需信号的滤波输出信号,滤波误差和滤波器权重。

  • lms=EngeeDSP。LMSFilter(名称=值) -返回具有指定属性的自适应FIR滤波器系统对象作为一对 名称=值,在哪里 姓名 -物业的名称,以及 价值 -适当的值。 您可以指定多个对 «名称-值» 对的顺序并不重要。 未指定的属性保留其默认值。

使用

  • [参数:y],[参数:err],[参数:wts]=lms(<参数:x>>,[参数:d]) -过滤输入信号 x 使用 d 作为所需信号,并返回滤波后的输出信号 y,过滤错误 错误 和估计的滤波器权重 西隧. 一个对象 lms 评估将输出信号和所需信号之间的误差最小化所需的权重。

  • [参数:y],[参数:err]=lms(<参数:x>>,[参数:d]) -仅返回滤波后的输出信号 y 和过滤错误 错误 如果为属性*[Property:OutputFilterWeights]*值集 错误.

  • ___ =lms([参数:x],[参数:d],[参数:mu]) -用途 木 作为步长,如果为属性*[Property:SpecifyStepSizeVia]*值集 "输入端口". 这些输入参数可以与前面的任何一组输出参数一起使用。

  • ___ =lms(<参数:x>>,<参数:d>>,<参数:a>>) -用途 a 作为控制适配的信号,if为属性*[Property:AdaptPort]*value set 真的. 何时 a 如果不等于零,则滤波器不断更新滤波器权重。 何时 a 等于零,则滤波器权重保持恒定。

  • ___ =lms([参数:x],[参数:d],[参数:r]) -用途 r 作为复位信号,如果为属性*[Property:ResetPort]*value set "上升沿", "下降边缘", "任一边" 或 "非零样本". 如果发生重置事件,筛选器将筛选器权重重置为其初始值。

  • [参数:y],[参数:err],[参数:wts]=lms(<参数:x>>,<参数:d>>,<参数:mu>>,<参数:a>>,<参数:r>>) -过滤输入信号 x 使用 d 作为所需信号, 木 作为步长, a 作为信号控制适应,以及 r 作为复位信号。 对象返回滤波后的输出信号 y,过滤错误 错误 和适配的滤波器权重 西隧. 设置适当的属性以提供所有可能的输入数据。

争论

输入参数

# x — 输入信号

+ 标量,标量 | 列向量

Details

将被LMS滤波器系统对象滤波的信号。 的输入信号 x 和所需的信号 [参数:d] 它们必须具有相同的大小和数据类型。

数据类型

漂浮物32, 漂浮64</无翻译> 支持复数::是

# d — 所需信号

+ 标量,标量 | 列向量

Details

LMS滤波器调整其权重系数 [参数:wts] 尽量减少错误 [参数:错误] 和输入信号的最精确近似 [参数:x] 到所需的信号 d.

的输入信号 [参数:x] 和所需的信号 d 它们必须具有相同的大小和数据类型。

的输入信号 d 它可以有一个可变的大小。 即使在对象已经进入锁定状态之后,列向量中的元素数量也可以改变。 系统对象在调用其算法时被阻止。

数据类型

漂浮物32, 漂浮64</无翻译> 支持复数::是

# 穆 — 步长

+ 非负标量

Details

适应步长的系数,设为非负标量。 保证了方法的收敛性 "归一化LMS" 步长要大一些 0 而且更少 2. 输入步长的数据类型必须与参数的数据类型匹配。 [参数:x] 和 [参数:d].

小步长确保了输出信号之间的小稳态误差 [参数:y] 和所需的信号 [参数:d]. 如果步长较小,则滤波器的收敛速率降低。 要增加收敛速率,请增加步长。 注意,如果步长较大,滤波器可能变得不稳定。

依赖关系

若要使用此参数,请将属性设置为*[Property:SpecifyStepSizeVia]*value "输入端口".

数据类型

漂浮物32, 漂浮64</无翻译>

# 一个 — 适应管理

+ 标量,标量

Details

的适配控制输入,其确定如何更新滤波器权重。 如果此参数的值不为零,则对象会不断更新筛选器权重。 如果此参数的值为零,则筛选器权重保持其当前值。

依赖关系

若要使用此参数,请将属性设置为*[Property:AdaptPort]*value 真的.

数据类型

漂浮物32, 漂浮64, Int8, Int16, Int32, UInt8, UInt16, UInt32, 布尔</无翻译>

# r — 复位信号

+ 标量,标量

Details

根据*[Property:ResetPort]*的值重置过滤器权重的重置信号。

依赖关系

若要使用此参数,请将属性设置为*[Property:ResetPort]*value "上升沿", "下降边缘", "任一边" 或 "非零样本".

数据类型

漂浮物32, 漂浮64, Int8, Int16, Int32, UInt8, UInt16, UInt32, 布尔</无翻译>

输出参数

# y — 滤波后的输出信号

+ 标量,标量 | 列向量

Details

滤波后的输出信号作为标量或列向量返回。 对象使其滤波器权重适应输入信号的收敛 [参数:x] 到所需的信号 [参数:d]. 滤波器在输出端输出会聚信号。

数据类型

漂浮物32, 漂浮64</无翻译> 支持复数::是

# 错误 — 输出和所需信号之间的差异

+ 标量,标量 | 列向量

Details

输出信号的差值 [参数:y] 和所需的信号 [参数:d],作为标量或列向量返回。 数据类型 错误 对应于数据类型 [参数:y]. 自适应滤波器的目的是最小化这种误差。 对象调整其加权系数以收敛于最优滤波器加权系数,所述最优滤波器加权系数提供尽可能接近期望信号的输出信号。

数据类型

漂浮物32, 漂浮64</无翻译>

# wts — 自适应滤波器权重

+ 标量,标量 | 列向量

Details

自适应滤波器权重作为标量或列向量返回,其长度由属性*[Property:FilterLength]*的值确定。

数据类型

漂浮物32, 漂浮64</无翻译>

特征

None.

方法

所有系统对象通用

步!::运行系统对象运算算法 释放!::允许更改系统对象属性的值 重置!::重置系统对象的内部状态

算法

LMS滤波器算法由以下公式定义:





可以在*[Property:Algorithm]*属性的值中设置的各种自适应LMS滤波器算法定义如下:

  • "LMS" -求解维纳-霍普夫方程并找到自适应滤波器的滤波器系数:

  • "归一化LMS" -lms算法的规范化版本:

    的情况下 "归一化LMS" 为了克服更新权重时潜在的数值不稳定性,在分母中添加了一个小的正常数 . 用于双精度浮点输入 等于函数的输出 eps(Float64). 对于单精度数据 等于函数的输出 eps(Float32).

  • "Sign-Error LMS" -在每次后续迭代时应用于当前滤波器权重的校正取决于误差符号。 :

  • "Sign-Data LMS" -每次迭代时滤波器权重的校正取决于输入信号的符号 :

    哪里 它由实数组成。

  • "标志-标志LMS" -在每次后续迭代中应用于当前滤波器权重的校正取决于符号 ,并从标志 :

    哪里 它由实数组成。

上面的方程中使用了以下变量:

  • -现时时间指数;

  • -每步缓冲输入样本的向量 ;

  • 是每步缓冲输入样本的复共轭向量 ;

  • -步骤中滤波器的权重估计的向量 ;

  • -滤波后的输出信号的步骤 ;

  • -步骤中的估计误差 ;

  • -步骤中所需的信号 ;

  • -适应步骤的大小;

  • -损失系数是这样的 ;

  • -校正权重更新期间发生的任何潜在数值不稳定性的常数。

文学作品

  1. Hayes,M.H. _Statistical Digital Signal Processing and Modeling._纽约:John Wiley&Sons,1996。