AnyMath 文档

EngeeDSP.LMSFilter

使用最小二乘法(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 和过滤错误 错误 如果为属性*OutputFilterWeights*值集 错误.

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

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

  • ___ =lms(<参数:x>>,<参数:d>>,<参数:r>>) -用途 r 作为复位信号,如果为属性*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]. 如果步长较小,则滤波器的收敛速率降低。 要增加收敛速率,请增加步长。 注意,如果步长较大,滤波器可能变得不稳定。

依赖关系

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

数据类型

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

# 一个 — 适应管理

+ 标量,标量

Details

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

依赖关系

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

数据类型

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

# r — 复位信号

+ 标量,标量

Details

根据*ResetPort*的值重置过滤器权重的重置信号。

依赖关系

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

数据类型

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

输出参数

# y — 滤波后的输出信号

+ 标量,标量 | 列向量

Details

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

数据类型

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

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

+ 标量,标量 | 列向量

Details

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

数据类型

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

# wts — 自适应滤波器权重

+ 标量,标量 | 列向量

Details

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

数据类型

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

特征

# OutputFilterWeights — 滤波器输出端的加权因子
Logical

Details

将此属性设置为 真的 (默认)从输出参数中获取过滤器权重 [参数:wts].

避免使用输出参数 西隧,将此属性设置为 错误.

# ResetPort — 用于激活加权系数的复位的附加输入
String

Details

启动过滤器权重重置的事件,使用以下选项之一设置:

  • "没有" (默认)-不要使用输入参数。 [参数:r].

  • "上升沿" -当信号开始复位操作 r 它的变化如下:

**从负值增加到正值或零;

**当增加不是从负值到零的增加的延续时,从零增加到正值,如图所示:

+ counter 1

  • "下降边缘" -当信号开始复位操作 r 它的变化如下:

**从正值减小到负值或零;

**当减小不是从正值到零的减小的延续时,从零减小到负值,如图所示:

+ counter 2

  • "任一边" -当输入参数为 r 发生启动事件 "上升沿" 或 "下降边缘".

  • "非零样本" —在每个采样周期开始复位操作,当信号 r 不等于零。

# Algorithm — 计算滤波器权重的算法
String

Details

一种计算滤波器权重的方法,使用以下方法之一指定:

  • "LMS" (默认)-求解Wiener-Hopf方程并找到自适应滤波器的滤波器系数。

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

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

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

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

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

# StepSize — 步长
Real number

Details

适应步长的系数,设置为非负标量。 保证了方法的收敛性 "归一化LMS" 步长要大一些 0 而且更少 2.

小步长确保输出信号之间的低稳态误差 [参数:y] 和所需的信号 [参数:d]. 然而,随着小步长,滤波器的收敛速率降低。 要提高收敛速率,应增加步长。 请记住,如果步长太大,滤波器可能会变得不稳定。

默认值 — 0.1.

依赖关系

若要使用此属性,请设置*SpecifyStepSizeVia*值 "对话".

# LeakageFactor — 损失比率
Real number

Details

用于执行有损LMS算法(leaky LMS)的损失系数,设置为范围内的标量 [0, 1]. 如果值为 1 (默认情况下),适应算法中没有损失。 如果值小于 1 滤波器实现有损LMS算法。

# AdaptPort — 使用输入参数更新筛选器权重
Logical

Details

使用输入参数更新筛选器权重的选项,由以下值之一设置:

  • 错误 (默认)-对象不断更新过滤器权重。;

  • 真的 -当调用算法时,向对象传送适配控制输入信号。 [参数:a]. 如果该信号的值非零,则对象不断更新滤波器权重。 如果信号值为零,则滤波器权重保留其当前值。

# SpecifyStepSizeVia — 定适配步骤大小的方法
String

Details

设置适配步骤的大小的方法,由以下值之一设置:

  • "对话" (默认)-使用*StepSize指定步长*;

  • "输入端口" -使用参数指定步长 [参数:mu].

# InitialValueOfFilterWeights — 滤波器权重的初始值
Scalar / array of real and/or complex numbers

Details

过滤器权重的初始值,设置为长度等于属性值的标量或向量*FilterLength*。

默认值 — 0.

# FilterLength — 过滤器长度
Int64 integer

Details

FIR滤波器系数的向量的长度,设为正整数。

默认值 — 32.

方法

所有系统对象通用

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

算法

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





可以在*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。