文档

dsp.LMSFilterSystem object

计算输出,错误,和LMS自适应滤波器的权重

描述

dsp.LMSFilter系统对象™实现了一种自适应有限脉冲响应(杉木)滤波器收敛期望信号的输入信号使用以下算法:

  • LMS

  • 归一化LMS

  • Sign-Data LMS

  • 符号误差LMS

  • Sign-Sign LMS

这些方法的更多细节,请参阅算法

过滤器调整权重,直到误差主要输入信号与期望信号之间是最小的。的均方误差(MSE)计算使用msesim函数。的预测版本使用维纳滤波器在MSE决定msepred函数。的maxstep函数计算的最大适应步长,控制收敛的速度。

使用一种自适应滤波器过滤一个信号:

  1. 创建dsp。LMSFilter object and set its properties.

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

了解更多关于系统对象是如何工作的,看到的系统对象是什么?(MATLAB)。

创建

语法

lms = dsp.LMSFilter
lms = dsp.LMSFilter(左)
lms = dsp.LMSFilter(名称、值)

描述

例子

lms= dsp.LMSFilter返回一个LMS滤波器对象,lms计算输出过滤,过滤错误和滤波器权值对于一个给定的输入和期望信号使用至少意味着广场(LMS)算法。

例子

lms = dsp.LMSFilter (l)返回一个对象与LMS滤波器长度属性设置为l

例子

lms = dsp.LMSFilter (名称,值)返回一个LMS滤波器与每个指定的对象属性设置为指定的值。在单引号附上每个属性的名字。您可以使用该语法与以前的输入参数。

属性

全部展开

属性,除非另有注明nontunable后,这意味着你不能改变它们的值调用对象。对象锁当你叫他们,释放函数打开它们。

如果一个属性可调在任何时候,你可以改变它的值。

改变属性值的更多信息,请参阅系统设计在MATLAB使用系统对象(MATLAB)。

法计算滤波器权重,指定为以下之一:

  • “LMS”

  • “归一化LMS”

  • “Sign-Data LMS”

  • “符号误差LMS”

  • “Sign-Sign LMS”

更多细节的算法,明白了算法

数字滤波器权重向量的长度,指定为一个正整数。

例子:64年

例子:16

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

指定适应步长方法,指定为以下之一:

  • “属性”——属性StepSize指定每个适应一步的大小。

  • 输入端口的——指定适应步长为输入对象之一。

适应步长因子,指定为一个非负标量。为归一化LMS方法的收敛步长必须大于0小于2。

一小步大小保证输出之间的稳态误差小y和所需的信号d。如果步长很小,滤波器的收敛速度下降。提高收敛速度,增加步长。注意,如果步长很大,过滤器可以变得不稳定。计算出最大的步长过滤器可以接受没有变得不稳定,使用maxstep函数。

可调:是的

依赖关系

适用于当您设置这个属性StepSizeSource“属性”

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

泄漏因素时使用实现漏水的LMS方法,指定为一个标量范围[0 1]。值等于1时,没有泄漏的调整方法。值小于1时,滤波器实现了一个漏水的LMS方法。

例子:0.5

可调:是的

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

滤波器权重的初始条件,指定为一个标量或矢量的长度等于的价值长度财产。当输入是真实的,该属性的值必须是真实的。

例子:0

例子:[1 3 1 2 7 8 9 0 2 2 8 2]

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64
复数的支持:万博1manbetx是的

国旗适应滤波器权重,指定为以下之一:

  • ——对象不断更新滤波器权重。

  • 真正的——一种适应性控制输入提供给对象时调用它的算法。如果这个输入的值是零,对象不断更新滤波器权重。如果这个输入的值是零,滤波器权重留在他们的当前值。

国旗重置滤波器权重,指定为以下之一:

  • ——对象不重置权重。

  • 真正的——一个复位控制输入提供给对象时调用它的算法。此设置允许WeightsResetCondition财产。对象重置筛选权重值的基础上WeightsResetCondition财产和复位输入提供给对象的算法。

事件触发的重置过滤权重,指定为以下之一。对象重置滤波器权重时重置事件中发现其复位输入。

  • “零”在每个样本——触发复位操作,当复位输入不为零。

  • “前沿”——触发复位操作当复位输入下列之一:

    • 从一个负值正数或零。

    • 从零到一个积极的价值上升,上升不是继续从一个负值上升到零。

  • 的下降沿——触发复位操作当复位输入下列之一:

    • 瀑布从正数负数或零。

    • 瀑布从零到一个负值,秋天不是继续从一个积极的价值为零。

  • “要么边缘”——触发复位操作时复位输入是一个上升或下降沿边缘。

对象重置滤波器权重基于此属性的值和复位输入r提供给对象的算法。

依赖关系

这个属性设置时适用WeightsResetInputPort财产真正的

输出调整滤波器权重方法,指定为以下之一:

  • “最后一次”(默认)——对象返回一个列向量的权重对应的最后一个示例数据帧。权重向量的长度的值长度财产。

  • “所有”返回一个对象FrameLength——- - - - - -长度矩阵的权重。权重矩阵对应于完整的连续取样的历史FrameLength输入值的样本。矩阵中的每一行对应一组LMS滤波器权重计算出相应的输入样本。

  • “没有”——这个设置禁用权重的输出。

定点属性

指定定点运算的舍入模式。更多细节,请参阅舍入模式

溢出行动定点操作,指定为以下之一:

  • “包装”——对象包装定点操作的结果。

  • “饱和”——对象浸透定点操作的结果。

溢出行为的更多细节,请参阅溢出模式为定点操作。

步长单词长度和部分长度设置,指定为以下之一:

  • 首先输入单词长度一样的——对象指定步长单词长度的第一个输入的一样。长度比例计算得到最好的精度。

  • “自定义”——步大小的数据类型被指定为一个自定义数值类型通过CustomStepSizeDataType财产。

更多信息在这个对象使用步长数据类型,看到不动点部分。

词和部分长度的步长,指定为一个autosigned数值类型的字长16和一小部分的长度15。

例子:numerictype ([], 32)

依赖关系

这个属性应用在下列条件:

泄漏因素字长和部分长度设置,指定为以下之一:

  • 首先输入单词长度一样的——对象指定的字长泄漏因素是第一个输入的一样。长度比例计算得到最好的精度。

  • “自定义”——泄漏系数的数据类型被指定为一个自定义数值类型通过CustomLeakageFactorDataType财产。

更多信息的泄漏系数数据类型这个对象使用,看到不动点部分。

词和部分长度的泄漏因素,指定为一个autosigned数值类型的字长16和一小部分的长度15。

例子:numerictype ([], 32)

依赖关系

这个属性设置时适用LeakageFactorDataType财产“自定义”

权重字长和部分长度设置,指定为以下之一:

  • 与第一次输入的——对象指定的数据类型滤波器权重是第一个输入的一样。

  • “自定义”——滤波器权重的数据类型被指定为一个自定义数值类型通过CustomWeightsDataType财产。

关于过滤器的更多信息权重数据类型这个对象使用,看到不动点部分。

指定的过滤器权重,词和部分长度作为autosigned数值类型的字长16和一小部分的长度15。

例子:numerictype([], 32岁,20)

依赖关系

这个属性设置时适用WeightsDataType财产“自定义”

能源产品单词长度和长度比例设置,指定为以下之一:

  • 与第一次输入的——对象指定的数据类型能源产品第一个输入的一样。

  • “自定义”——能源产品的数据类型被指定为一个自定义数值类型通过CustomEnergyProductDataType财产。

更多信息在能源产品数据类型这个对象使用,看到不动点部分。

依赖关系

这个属性设置时适用方法财产“归一化LMS”

词和部分长度的能源产品,指定为一个autosigned数值类型,字长为32个,一小部分的长度20。

依赖关系

这个属性设置时适用方法财产“归一化LMS”EnergyProductDataType财产“自定义”

蓄能器字长和部分长度设置,指定为以下之一:

  • 与第一次输入的——对象指定的数据类型蓄能器是第一个输入的一样。

  • “自定义”——蓄能器的数据类型被指定为一个自定义数值类型通过CustomEnergyAccumulatorDataType财产。

更多信息在蓄能器数据类型这个对象使用,看到不动点部分。

依赖关系

这个属性设置时适用方法财产“归一化LMS”

蓄能器的词和部分长度指定为一个autosigned数值类型,字长为32个,一小部分的长度20。

依赖关系

这个属性设置时适用方法财产“归一化LMS”EnergyAccumulatorDataType财产“自定义”

卷积产品单词长度和长度比例设置,指定为以下之一:

  • 与第一次输入的——卷积的对象指定数据类型的产品是一样的,第一个输入。

  • “自定义”——产品卷积的数据类型被指定为一个自定义数值类型通过CustomConvolutionProductDataType财产。

有关卷积的更多信息产品数据类型这个对象使用,看到不动点部分。

卷积的词和部分长度的产品,作为autosigned指定数值类型,字长为32个,一小部分的长度20。

依赖关系

这个属性设置时适用ConvolutionProductDataType财产“自定义”

卷积蓄电池字长和部分长度设置,指定为以下之一:

  • 与第一次输入的——卷积的对象指定数据类型蓄电池是第一个输入的一样。

  • “自定义”——卷积累加器的数据类型被指定为一个自定义数值类型通过CustomConvolutionAccumulatorDataType财产。

有关卷积累加器的更多信息数据类型这个对象使用,看到不动点部分。

词和部分长度卷积的蓄电池,指定为一个autosigned数值类型,字长为32个,一小部分的长度20。

依赖关系

这个属性设置时适用ConvolutionAccumulatorDataType财产“自定义”

步长误差产品单词长度和长度比例设置,指定为以下之一:

  • 与第一次输入的——对象指定的数据类型步长误差产品第一个输入的一样。

  • “自定义”——步长误差的数据类型的产品是通过指定为一个自定义数字类型CustomStepSizeErrorProductDataType财产。

产品的更多信息在步长误差数据类型这个对象使用,看到不动点部分。

词和部分长度的步长错误产品,指定为一个autosigned数值类型,字长为32个,一小部分的长度20。

依赖关系

这个属性设置时适用StepSizeErrorProductDataType财产“自定义”

词和部分长度设置过滤器的权重更新产品,指定为以下之一:

  • 与第一次输入的——对象指定的数据类型滤波器权值更新产品第一个输入的一样。

  • “自定义”——滤波器权重更新产品的数据类型被指定为一个自定义数值类型通过CustomWeightsUpdateProductDataType财产。

关于过滤器的更多信息权重更新产品数据类型这个对象使用,看到不动点部分。

词和部分长度的滤波器权重更新产品,指定为一个autosigned数值类型,字长为32个,一小部分的长度20。

依赖关系

这个属性设置时适用WeightsUpdateProductDataType财产“自定义”

商字长和部分长度设置,指定为以下之一:

  • 与第一次输入的——指定商数据类型的对象是第一个输入的一样。

  • “自定义”——商的数据类型被指定为一个自定义数值类型通过CustomQuotientDataType财产。

更多信息商数据类型这个对象使用,看到不动点部分。

依赖关系

这个属性设置时适用方法财产“归一化LMS”

词和部分长度的滤波器权重更新产品,指定为一个autosigned数值类型,字长为32个,一小部分的长度20。

依赖关系

这个属性设置时适用方法财产“归一化LMS”QuotientDataType财产“自定义”

使用

比R2016b早版本,使用一步函数运行系统对象™算法。的参数一步是你创建的对象,其次是本节所示的参数。

例如,y =步骤(obj, x)y = obj (x)执行相同操作。

语法

[y,犯错,但是]= lms (x, d)
[y,犯错]= lms (x, d)
(___]= lms (x, d,μ)
(___]= lms (x, d, a)
(___]= lms (x, d, r)
[y,犯错,但是]= lms (x, d,μa, r)

描述

(y,犯错,出世)= lms (x,d)滤波器的输入信号,x,使用d期望信号,并返回输出过滤y过滤错误犯错,估计滤波器权重出世。所需的lms滤波器对象估计滤波器权值之间的误差最小化输出信号与期望信号。

(y,犯错)= lms (x,d)滤波器的输入信号,x,使用d期望信号,并返回输出过滤y过滤错误犯错WeightsOutput属性设置为“没有”

(___)= lms (x,d,μ)滤波器的输入信号,x,使用d所需的信号μ步长,当StepSizeSource属性设置为输入端口的。可以使用这些输入与前一套输出。

(___)= lms (x,d,一个)滤波器的输入信号,x,使用d所需的信号一个适应控制时AdaptInputPort属性设置为真正的。当一个非零,系统对象不断更新滤波器权重。当一个是零,过滤器的重量保持不变。

(___)= lms (x,d,r)滤波器的输入信号,x,使用d所需的信号r作为一个复位信号时WeightsResetInputPort属性设置为真正的。的WeightsResetCondition属性可用于设置重置触发条件。如果重置事件发生时,系统对象重置滤波器权值初始值。

(y,犯错,出世)= lms (x,d,μ,一个,r)滤波器的输入信号,x,使用d期望信号,μ步长,一个为适应控制,r复位信号,并返回输出过滤y过滤错误犯错,适应滤波器权重出世

输入参数

全部展开

信号被LMS滤波器过滤。输入,x所需的信号,d必须具有相同的大小、数据类型和复杂性。如果输入是定点,数据类型必须签署和必须具有相同的单词长度所需的信号。

输入,x可以适应信号。你可以改变的数量列向量中的元素即使对象是锁着的。系统对象锁,当你调用对象运行它的算法。

数据类型:||int8|int16|int32|int64|fi
复数的支持:万博1manbetx是的

LMS滤波器调整滤波器权值,出世,尽量减少错误,犯错和收敛的输入信号x所需的信号d尽可能密切。

输入,x所需的信号,d,必须有相同的大小,数据类型,和复杂性。如果定点所需的信号,数据类型必须签署,必须有相同的单词长度作为数据输入。

输入,d可以适应信号。你可以改变的数量列向量中的元素即使对象是锁着的。系统对象锁,当你调用对象运行它的算法。

数据类型:||int8|int16|int32|int64|fi
复数的支持:万博1manbetx是的

适应步长因子,指定为一个标量,非负数值。为归一化LMS方法的收敛步长应大于0小于2。步长输入的数据类型必须匹配的数据类型xd。如果定点数据类型,数据类型必须签署。

一小步大小保证输出之间的稳态误差小y和所需的信号d。如果步长很小,滤波器的收敛速度下降。提高收敛速度,增加步长。注意,如果步长很大,过滤器可以变得不稳定。计算出最大的步长过滤器可以接受没有变得不稳定,使用maxstep函数。

依赖关系

这个输入时是必需的StepSizeSource属性设置为输入端口的

数据类型:||int8|int16|int32|int64|fi

控制如何适应控制输入滤波器权值更新。如果这个输入的值是零,对象不断更新滤波器权重。如果这个输入的值是零,滤波器权重留在他们的当前值。

依赖关系

这个输入时是必需的AdaptInputPort属性设置为真正的

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|逻辑

复位信号,重置筛选权重值的基础上WeightsResetCondition财产。

依赖关系

这个输入时是必需的WeightsResetInputPort属性设置为真正的

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|逻辑

输出参数

全部展开

过滤输出,作为一个标量或返回一个列向量。对象调整滤波器权值收敛的输入信号x匹配所需的信号d。滤波器输出融合信号。

数据类型:||int8|int16|int32|int64|fi
复数的支持:万博1manbetx是的

输出信号之间的差异y和所需的信号d,作为一个标量或返回一个列向量。自适应滤波器的目标是最小化这个错误。对象调整权重收敛到最优滤波器权重产生一个相匹配的输出信号与期望信号。更多的细节犯错计算,看算法

数据类型:||int8|int16|int32|int64|fi
复数的支持:万博1manbetx是的

自适应滤波器权值,作为一个标量或返回值指定的列向量的长度长度

数据类型:||int8|int16|int32|int64|fi
复数的支持:万博1manbetx是的

对象的功能

使用一个目标函数,指定系统对象作为第一个输入参数。例如,释放系统资源的系统对象命名obj使用这个语法:

发行版(obj)

全部展开

maxstep 最大的步长LMS自适应滤波器的收敛
msepred 预测均方误差LMS自适应滤波器
msesim 估计均方误差自适应滤波器
一步 运行系统对象算法
释放 释放资源,并允许系统对象属性值和输入特征的变化
重置 重置系统对象的内部状态

例子

全部展开

均方误差(MSE)措施平方的平均值之间的错误期望信号和主信号自适应滤波器的输入。减少这个误差收敛的主要期望信号的输入。确定MSE的预报值和模拟值的MSE每次即时使用msepredmsesim功能。相互比较这些MSE值和最小MSE和稳态均方误差值。此外,计算系数的平方误差的总和协方差矩阵系数的痕迹。

请注意:如果您使用的是R2016a或更早的版本中,用相同的步骤替换每个调用对象的语法。例如,obj (x)就变成了步骤(obj, x)

初始化

创建一个dsp.FIRFilter系统对象™代表未知的系统。通过信号,x,冷杉的过滤器。未知系统的输出所需的信号,d,这是未知的系统的输出的总和(冷杉过滤器)和加性噪声信号,n

0.5 num = fir1(31日);冷杉= dsp.FIRFilter (“分子”,num);iir = dsp.IIRFilter (“分子”sqrt (0.75),“分母”-0.5 [1]);x = iir(标志(randn(2000年25)));n = 0.1 * randn(大小(x));d =冷杉(x) + n;

LMS滤波器

创建一个dsp.LMSFilter系统对象创建一个过滤器,适应输出所需的信号。自适应滤波器的长度设置为32个水龙头,步长为0.008和5的大量毁灭因素分析和仿真。的变量simmse代表输出之间的模拟MSE未知的系统,d和自适应滤波器的输出。的变量均方误差给出了相应的预测价值。

l = 32;μ= 0.008;m = 5;lms = dsp.LMSFilter (“长度”l,“StepSize”μ);均方误差(mmse, emse meanW, traceK] = msepred (lms, x, d, m);[simmse, meanWsim Wsim traceKsim] = msesim (lms, x, d, m);

情节MSE的结果

模拟MSE的值进行比较,预测均方误差、最小均方误差,和最后的MSE。最后的MSE值是由最小MSE和多余的MSE的总和。

nn = m: m:大小(x, 1);simmse semilogy (nn,大小(x, 1) [0], [(emse + mmse)(emse + mmse)], nn, mse,大小(x, 1) [0], [mmse mmse])标题(的均方误差性能)轴([0大小(x, 1) 0.001 10])传说(“MSE (Sim)。”,“最后的MSE”,MSE的,“最小MSE。”)包含(“时间指数”)ylabel (的平方误差值)

预测的模拟MSE MSE遵循相同的轨迹。这两个轨迹收敛与稳态均方误差(决赛)。

画出轨迹系数

meanWsim给出的是模拟系数的平均值msesimmeanW的预测系数的平均值msepred

比较模拟和预测平均值LMS滤波器系数12日13、14和15。

情节(nn meanWsim (: 12),“b”、神经网络、meanW (: 12),“r”神经网络,meanWsim (:, 13:15),“b”、神经网络、meanW (:, 13:15),“r”)PlotTitle = {“平均系数轨迹”;“W W (12)、(13)、W(14)和W (15)}
PlotTitle =2 x1单元阵列{'平均系数轨迹}{“W W (12)、(13)、W(14)和W (15)}
标题(PlotTitle)传说(“模拟”,“理论”)包含(“时间指数”)ylabel (的系数值)

在稳定状态下,轨迹收敛。

平方系数之和的错误

比较的平方系数误差的总和msepredmsesim。这些值的协方差矩阵系数的踪迹。

traceK traceKsim semilogy(神经网络,神经网络,“r”)标题(“Sum-of-Squared系数错误”)轴([0大小(x, 1) 0.0001 1])传说(“模拟”,“理论”)包含(“时间指数”)ylabel (的平方误差值)

maxstep函数计算的最大步长自适应滤波器。这步长保持滤波器稳定在最大程度的收敛速度。创建主输入信号,x,通过签署IIR滤波器的随机信号。信号x每一帧包含50帧2000样品。创建一个LMS滤波器与32个水龙头和步长为0.1。

50 x = 0 (2000);IIRFilter = dsp.IIRFilter (“分子”sqrt (0.75),“分母”-0.5 [1]);k = 1:尺寸(x, 2) x (:, k) = IIRFilter(标志(randn(大小(x, 1), 1)));结束μ= 0.1;LMSFilter = dsp.LMSFilter (“长度”32岁的“StepSize”μ);

计算出最大适应步长和最大的步长在均方意义上使用maxstep函数。

[mumax, mumaxmse] = maxstep (LMSFilter, x)
mumax = 0.0625
mumaxmse = 0.0536

确定一个未知的系统使用LMS算法。自适应滤波器的目标是最小化之间的误差信号自适应滤波器的输出和未知系统的输出(或系统被识别)。一旦误差信号很小,适应滤波器与未知的系统。

请注意:如果您使用的是R2016a或更早的版本中,用相同的步骤替换每个调用对象的语法。例如,obj (x)就变成了步骤(obj, x)

初始化

创建一个dsp.FIRFilter对象代表了系统识别。通过信号,x冷杉的过滤器。未知系统的输出所需的信号,d,这是未知的系统的输出的总和(冷杉过滤器)和加性噪声信号,n

filt = dsp.FIRFilter;filt。0.25分子= fir1 (10);x = randn (1000 1);n = 0.01 * randn (1000 1);d = filt (x) + n;

自适应滤波器

创建一个dsp.LMSFilter对象创建一个使用LMS自适应算法的自适应滤波器。自适应滤波器的长度设置为11水龙头和步长至0.01。通过主要的输入信号,x所需的信号,d,LMS滤波器。输出,y自适应滤波器的信号融合所需的信号,d,从而减少了错误,e,在两个信号之间。

lms = dsp.LMSFilter(11日“StepSize”,0.01);[y, e, w] = lms (x, d);情节(1:1000 [d, y, e])标题(“一个冷杉过滤器的系统标识”)传说(“想要的”,“输出”,“错误”)包含(“时间指数”)ylabel (的信号值)

比较适应滤波器对未知系统

权重向量,w代表了LMS滤波器的系数,是适应像未知的系统(冷杉过滤器)。确认收敛,比较分子的冷杉滤波器和自适应滤波器的估计重量。

茎([filt.Numerator。w])传说(“实际”,“估计”)包含(“系数#”)ylabel (的系数值)

所有系数未知的系统(冷杉过滤器)重叠改编LMS滤波器的系数。

取消加性噪声,n,添加到一个未知的系统使用一个LMS自适应滤波器。LMS滤波器调整系数,直到其传递函数匹配未知系统的传递函数尽可能密切。自适应滤波器的输出之间的差异和未知系统代表了错误的输出信号,e。减少这种误差信号自适应滤波器的目的。

未知的系统和LMS滤波器过程相同的输入信号,x,并产生输出dy,分别。如果自适应滤波器的系数匹配系数未知的系统误差,e实际上代表了加性噪声。

请注意:如果您使用的是R2016a或更早的版本中,用相同的步骤替换每个调用对象的语法。例如,obj (x)就变成了步骤(obj, x)

初始化

创建一个dsp.FIRFilter系统对象™代表未知的系统。创建一个dsp.LMSFilter对象并设置长度11水龙头和步长至0.05。创建一个正弦波代表未知噪声添加到系统。查看信号在一个时间范围。

FrameSize = 100;硝石= 10;lmsfilt2 = dsp.LMSFilter (“长度”11“方法”,“归一化LMS”,“StepSize”,0.05);firfilt2 = dsp.FIRFilter (“分子”fir1 (10 (。5、综合成绩));sinewave = dsp.SineWave (“频率”,0.01,“SampleRate”,1“SamplesPerFrame”,FrameSize);TS = dsp.TimeScope (“时间间隔”,FrameSize *硝石,“TimeUnits”,“秒”,“YLimits”3 [3],“BufferLength”2 * FrameSize *硝石,“ShowLegend”,真的,“ChannelNames”,{噪声信号的,误差信号的});

创建一个随机的输入信号,x并将信号传递给冷杉过滤器。添加一个正弦波的输出冷杉滤波器产生噪声信号,d。的信号,d是未知的输出系统。通过噪声信号和主LMS滤波器输入信号。查看噪声信号和误差信号的时间范围。

k = 1:硝石x = randn (FrameSize, 1);d = firfilt2 (x) + sinewave ();[y, e, w] = lmsfilt2 (x, d);TS ((d, e))结束发行版(TS)

误差信号,e是正弦噪声添加到未知的系统。最小化误差信号最小噪声添加到系统中。

请注意:本例中只运行在R2017a或更高版本。如果您使用的是比R2017a早发布,对象不输出一个完整的连续取样滤波器权重的历史。如果您使用的是比R2016b早发布,用等效替换每个调用函数一步语法。例如,myObject (x)就变成了步骤(myObject x)

初始化dsp.LMSFilter系统对象™和设置WeightsOutput财产“所有”。此设置允许LMS滤波器输出的权重矩阵维度(FrameLength长度),对应于完整的连续取样重量的历史FrameLength输入值的样本。

FrameSize = 15000;lmsfilt3 = dsp.LMSFilter (“长度”,63,“方法”,“LMS”,“StepSize”,0.001,“LeakageFactor”,0.99999,“WeightsOutput”,“所有”);%全面权重的历史w_actual = fir1(64年,[0.5 - 0.75]);firfilt3 = dsp.FIRFilter (“分子”,w_actual);sinewave = dsp.SineWave (“频率”,0.01,“SampleRate”,1“SamplesPerFrame”,FrameSize);TS = dsp.TimeScope (“时间间隔”FrameSize,“TimeUnits”,“秒”,“YLimits”(-0.25 - 0.75),“BufferLength”2 * FrameSize“ShowLegend”,真的,“ChannelNames”,{33多项式系数估计的,34多项式系数估计的,35多项式系数估计的,“多项式系数33实际”,“多项式系数34实际”,“35实际多项式系数”});

运行一个框架和输出完整的自适应权重的历史,w

x = randn (FrameSize, 1);%输入信号d = firfilt3 (x) + sinewave ();% +噪声信号[~ ~ w] = lmsfilt3 (x, d);

在每一行w是一组权重估计相应的输入样本。每一列中w给出了特定重量的完整历史。情节的实际重量和整个历史第33,第34、35重量。在情节中,您可以看到,估计重量输出最终收敛与实际重量作为自适应滤波器接收输入样本和继续适应。

idxBeg = 33;idxEnd = 35;TS ([w (:, idxBeg: idxEnd) repmat (w_actual (idxBeg: idxEnd) FrameSize, 1)))

算法

LMS滤波算法定义由以下方程。

y ( n ) = w T ( n 1 ) u ( n ) e ( n ) = d ( n ) y ( n ) w ( n ) = α w ( n 1 ) + f ( u ( n ) , e ( n ) , μ )

这个系统中可用的各种LMS自适应滤波器算法对象被定义为:

  • LMS:

    f ( u ( n ) , e ( n ) , μ ) = μ e ( n ) u * ( n )

  • 归一化LMS:

    f ( u ( n ) , e ( n ) , μ ) = μ e ( n ) u ( n ) ε + u H ( n ) u ( n )

  • 符号误差LMS:

    f ( u ( n ) , e ( n ) , μ ) = μ 标志 ( e ( n ) ) u * ( n )

  • Sign-Data LMS:

    f ( u ( n ) , e ( n ) , μ ) = μ e ( n ) 标志 ( u ( n ) )

    在哪里u(n)是真实的。

  • Sign-Sign LMS:

    f ( u ( n ) , e ( n ) , μ ) = μ 标志 ( e ( n ) ) 标志 ( u ( n ) )

    在哪里u(n)是真实的。

的变量如下:

变量 描述

n

当前时间指数

u(n)

缓冲输入样本向量的一步n

u *(n)

矢量的复共轭缓冲输入样本的一步n

w(n)

矢量滤波器权值估计的步骤n

y (n)

过滤输出步骤n

e (n)

一步的估计误差n

d (n)

所需的反应步骤n

µ

适应步长

α 泄漏的因素(0 <α≤1)

引用

[1]海耶斯,M.H.统计数字信号处理和建模。纽约:约翰·威利& Sons, 1996。

扩展功能

介绍了R2012a

这个主题有帮助吗?