EngeeDSP.LMSFilter
使用最小二乘法(Lms)计算输出、误差和系数。
库::`工程师` 座:: LMS滤波器
资料描述
该 EngeeDSP.LMSFilter 系统对象实现了自适应有限脉冲响应滤波器(FIR滤波器),它使用以下算法之一确保将输入信号收敛到所需信号: *LMS;
*归一化LMS;
*签名数据LMS; *Sign-Error LMS;
*签-签LMS。
有关这些算法的详细信息,请参阅算法。
滤波器调整其权重,直到参考输入信号和期望信号之间的误差最小。
要使用自适应FIR滤波器对信号进行滤波,请按照以下步骤操作:
-
创建*EngeeDSP。LMSFilter*对象并设置其属性。
-
用参数调用对象,就好像它是一个函数一样。
若要了解有关如何使用系统对象的详细信息,请参阅 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,过滤错误错误和适配的滤波器权重西隧. 设置适当的属性以提供所有可能的输入数据。
争论
输出参数
# wts — 自适应滤波器权重
+
标量,标量 | 列向量
Details
自适应滤波器权重作为标量或列向量返回,其长度由属性*FilterLength*的值确定。
| 数据类型 |
|
特征
#
ResetPort —
用于激活加权系数的复位的附加输入
String
Details
启动过滤器权重重置的事件,使用以下选项之一设置:
-
"没有"(默认)-不要使用输入参数。[参数:r]. -
"上升沿"-当信号开始复位操作r它的变化如下:
**从负值增加到正值或零;
**当增加不是从负值到零的增加的延续时,从零增加到正值,如图所示:
+
-
"下降边缘"-当信号开始复位操作r它的变化如下:
**从正值减小到负值或零;
**当减小不是从正值到零的减小的延续时,从零减小到负值,如图所示:
+
-
"任一边"-当输入参数为r发生启动事件"上升沿"或"下降边缘". -
"非零样本"—在每个采样周期开始复位操作,当信号r不等于零。
#
Algorithm —
计算滤波器权重的算法
String
#
StepSize —
步长
Real number
Details
适应步长的系数,设置为非负标量。 保证了方法的收敛性 "归一化LMS" 步长要大一些 0 而且更少 2.
默认值 — 0.1.
依赖关系
若要使用此属性,请设置*SpecifyStepSizeVia*值 "对话".
#
LeakageFactor —
损失比率
Real number
Details
用于执行有损LMS算法(leaky LMS)的损失系数,设置为范围内的标量 [0, 1]. 如果值为 1 (默认情况下),适应算法中没有损失。 如果值小于 1 滤波器实现有损LMS算法。
#
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"-在每次后续迭代中应用于当前滤波器权重的校正取决于符号 ,并从标志 :哪里 它由实数组成。
上面的方程中使用了以下变量:
-
-现时时间指数;
-
-每步缓冲输入样本的向量 ;
-
是每步缓冲输入样本的复共轭向量 ;
-
-步骤中滤波器的权重估计的向量 ;
-
-滤波后的输出信号的步骤 ;
-
-步骤中的估计误差 ;
-
-步骤中所需的信号 ;
-
-适应步骤的大小;
-
-损失系数是这样的 ;
-
-校正权重更新期间发生的任何潜在数值不稳定性的常数。