主要内容

dsp。RLSFilter

使用递归最小二乘(RLS)算法计算输出、误差和系数

描述

dsp。RLSFilter系统对象™使用RLS过滤器实现对输入的每个通道进行过滤。

要过滤输入的每个通道,请执行以下操作:

  1. 创建dsp。RLSFilter对象并设置其属性。

  2. 使用参数调用对象,就像调用函数一样。

要了解更多关于System对象如何工作的信息,请参见什么是系统对象?

创造

描述

rlsFilt= dsp。RLSFilter返回自适应RLS滤波器系统对象,rlsFilt。此系统对象使用RLS算法计算给定输入和期望信号的滤波输出、滤波误差和滤波器权重。

例子

rlsFilt=dsp.RLSFilter(伦恩返回RLS筛选器系统对象,rlsFilt.这个System对象具有长度属性设置为伦恩

rlsFilt=dsp.RLSFilter(名称,值返回每个指定属性都设置为指定值的RLS筛选器系统对象。将每个属性名称用单引号括起来。未指定的属性具有默认值。

性质

全部展开

除非另有说明,否则属性为nontunable,这意味着您不能在调用对象之后更改它们的值。对象在调用时锁定,而释放函数将解锁它们。

如果一个属性是可调,您可以随时更改它的值。

有关更改特性值的详细信息,请参见在MATLAB中使用系统对象进行系统设计

您可以指定用于计算过滤系数的方法为传统的RLS[1][2]户主[3][4]滑动窗口RLS[5][1][2]户主推拉窗[4]QR分解[1][2].此属性是不可调优的。

将RLS过滤器系数向量的长度指定为标量正整数值。此属性是不可更改的。

数据类型:仅有一个的||int8|int16|int32|int64|uint8|uint16|uint32|uint64

将滑动窗口的宽度指定为大于或等于长度属性值。此属性不可更改。

依赖关系

此属性仅在方法属性设置为滑动窗口RLS户主推拉窗

数据类型:仅有一个的||int8|int16|int32|int64|uint8|uint16|uint32|uint64

将RLS遗忘因子指定为小于或等于1的标量正数值。将此属性值设置为1表示无限内存,同时适应查找新筛选器。

可调:

数据类型:仅有一个的|

指定FIR自适应滤波器系数的初始值为标量或长度等于的向量长度属性值。

可调:

数据类型:仅有一个的|

指定输入信号的逆协方差矩阵的初始值。此属性必须是标量矩阵或平方矩阵,且每个维度等于长度属性值。如果设置标量值,则逆方差属性初始化为对角矩阵,其中对角元素等于该标量值。

可调:

依赖关系

此属性仅在方法属性设置为传统的RLS滑动窗口RLS

数据类型:仅有一个的|

指定输入信号的平方根逆协方差矩阵的初值。该属性必须是一个标量或每个维数等于的方阵长度属性值。如果设置标量值,则平方根逆方差属性初始化为对角矩阵,其中对角元素等于该标量值。

可调:

依赖关系

此属性仅在方法属性设置为户主户主推拉窗

数据类型:仅有一个的|

指定输入信号的平方根协方差矩阵的初始值。此属性必须是标量矩阵或方阵,且每个维度都等于长度属性值。如果设置标量值,则SquareRootCovariance属性初始化为对角线矩阵,对角线元素等于标量值。

可调:

依赖关系

此属性仅在方法属性设置为QR分解

数据类型:仅有一个的|

指定过滤器系数值是否应该被锁定。当您将此属性设置为符合事实的,过滤器系数不会更新,其值保持不变。默认值为(滤波器系数不断更新)。

可调:

用法

描述

例子

y= rlsFilt (xd递归地调整参考输入,x,以匹配所需的信号,d,使用System对象,rlsFilt.所需信号,d,是期望的信号加上一些不期望的噪声。

ye) = rlsFilt (xd显示RLS滤波器的输出以及错误,e,在参考输入和期望信号之间。滤波器调整其系数,直到误差消失e最小化。您可以通过访问系数对象的属性。这只能在调用对象后执行。例如,访问对象的优化系数rlsFilt过滤器,叫rlsFilt.系数在您将输入和所需的信号传递给对象之后。

输入参数

全部展开

要经过RLS滤波器滤波的信号。输入,x,以及所需的信号,d,必须具有相同的大小和数据类型。

输入可以是可变大小的信号。即使对象被锁定,也可以更改列向量中的元素数。当您调用System对象以运行其算法时,该对象将被锁定。

数据类型:仅有一个的|
复数的支持:金宝app

RLS滤波器调整其系数以最小化误差,e,收敛输入信号x到所要求的信号d尽可能接近。

输入,x,以及所需的信号,d,必须具有相同的大小和数据类型。

所需的信号,d,可以是一个可变大小的信号。即使对象被锁定,也可以更改列向量中的元素数。当您调用System对象以运行其算法时,该对象将被锁定。

数据类型:仅有一个的|
复数的支持:金宝app

输出参数

全部展开

滤波输出,作为标量或列向量返回。对象调整其滤波系数以收敛输入信号x以匹配所需的信号d.滤波器输出收敛信号。

数据类型:仅有一个的|
复数的支持:金宝app

输出信号之间的差异y以及所需的信号d,作为标量或列向量返回。RLS滤波器的目标是最小化该误差。对象调整其系数以收敛到最佳滤波器系数,从而产生与所需信号密切匹配的输出信号。如需了解更多有关如何e已计算,请参见算法.要访问RLS滤波器系数,请调用rlsFilt.系数在您将输入和所需的信号传递给对象之后。

数据类型:仅有一个的|
复数的支持:金宝app

对象的功能

要使用对象函数,请指定System对象作为第一个输入参数。例如,释放名为system的对象的系统资源obj,使用下面的语法:

释放(obj)

全部展开

msesim 自适应滤波器的估计均方误差
系统对象算法
释放 释放资源并允许更改系统对象属性值和输入特征
重置 使内部状态复位系统对象

例子

全部崩溃

使用递归最小二乘(RLS)滤波器识别用低通FIR滤波器建模的未知系统。比较未知系统和估计系统的频率响应。

请注意:如果你正在使用R2016a或更早的版本,将每个对对象的调用替换为等价的语法。例如,obj(x)变成步骤(obj,x)

初始化

创建一个数字信号处理器对象,表示要识别的系统。传递信号x到FIR滤波器。未知系统的输出是期望信号d,即未知系统(FIR滤波器)输出与加性噪声信号之和n

filt=dsp.FIRFilter(“分子”二十五分,fir1(10日));x = randn (1000 1);n = 0.01 * randn (1000 1);D = filt(x) + n;

自适应滤波器

创建一个dsp。RLSFilter对象创建RLS滤波器。将滤波器的长度设置为11个抽头,遗忘因子设置为0.98。传递主输入信号x以及所需的信号d到RLS滤波器。输出y自适应滤波器的特征是信号收敛到期望信号d从而使误差最小化e在两个信号之间。

rls=dsp.RLSFilter(11,“遗忘因子”[y,e]=rls(x,d);w=rls.系数;

绘制结果

输出信号与所需信号匹配,使两者之间的误差接近于零。

图(1:1000,[d,y,e]);标题(“FIR滤波器的系统识别”);传奇(“渴望的”“输出”“错误”);包含(“时间指数”); 伊拉贝尔(“信号值”);

图中包含一个Axis对象。具有FIR滤波器标题系统标识的Axis对象包含3个line类型的对象。这些对象表示所需、输出和错误。

比较权重

权重向量w表示适于类似未知系统(FIR滤波器)的RLS滤波器的系数。为确认收敛性,请比较FIR滤波器的分子和RLS滤波器的估计权重。

估计的滤波器权值与实际的滤波器权值紧密匹配,证实了在前面信号图中看到的结果。

茎([filt.Numerator;w]。');传奇(“实际”“估计”);包含(“系数#”); 伊拉贝尔(“系数值”);

图中包含一个轴对象。“轴”对象包含2个stem类型的对象。这些对象表示实际的、估计的。

这个例子演示了使用逆系统辨识模型的RLS自适应算法。

将自适应滤波器与未知滤波器级联导致自适应滤波器收敛到与未知系统相反的解。

若未知系统和自适应滤波器的传递函数为Hz),Gz)分别在以下情况下,期望信号和级联系统信号之间的测量误差达到其最小值:G (z) × H(z)=1.要使这个关系成立,Gz)必须等于1/H (z),未知系统传递函数的逆。

要证明这是正确的,请创建一个信号年代输入到级联滤波器对。

s=randn(3000,1);

在级联滤波器的情况下,未知滤波器导致信号到达两个滤波器后的和点的延迟。为了防止自适应滤波器试图适应它还没有看到的信号(相当于预测未来),将期望的信号延迟12个样本,这是未知系统的顺序。

通常,您不知道您试图识别的系统的顺序。在这种情况下,延迟所需信号的采样数等于自适应滤波器的一半阶数。延迟输入需要在输入前添加12个零值样本年代

延迟= 0(12日1);d =[延迟;s (1:2988)];%连接延迟和信号。

您必须保持所需的信号向量d长度与x,因此调整信号元素计数以允许延迟采样。

虽然不是通常的情况,在这个例子中,你知道未知滤波器的顺序,所以添加一个等于未知滤波器的顺序的延迟。

对于未知系统,使用低通12阶FIR滤波器。

filt = dsp.FIRFilter;filt。0.55分子= fir1(12日,“低”);

过滤年代为自适应算法功能提供输入数据信号。

x=过滤器;

要使用RLS算法,请创建dsp。RLSFilter对象,并设置其长度遗忘因子InitialInverseCovariance财产。

有关准备RLS算法对象的输入条件的更多信息,请参阅dsp。RLSFilter

P0 = 2 *眼(13);λ= 0.99;rls = dsp。RLSFilter(13,“遗忘因子”λ,...“初始反向方差”、p0);

这个例子寻求一个反解,你需要小心哪个信号携带数据,哪个是想要的信号。

先前的自适应滤波器示例使用滤波后的噪声作为所需信号(x)携带未知系统的信息。高斯分布和方差为1时,未过滤的噪声d是所需的信号。运行此自适应过滤器的代码为:

[y,e]=rls(x,d);

哪里y返回过滤后的输出和e包含错误信号作为滤波器自适应寻找未知系统的逆。

获得RLS滤波器的估计系数。

b=rls系数;

查看自适应RLS滤波器的频率响应(逆系统,G(z) )使用freqz.逆系统看起来像一个线性相位的高通滤波器。

freqz (b, 1)

图中包含2个轴对象。axis对象1包含一个类型为line的对象。axis对象2包含一个类型为line的对象。

查看未知系统的频率响应,H(z) 。响应是截止频率为0.55的低通滤波器的响应。

freqz (filt.Numerator, 1)

图中包含2个轴对象。axis对象1包含一个类型为line的对象。axis对象2包含一个类型为line的对象。

未知系统和自适应滤波器级联的结果是一个补偿系统,扩展截止频率为0.8。

overallCoeffs = conv (filt.Numerator, b);freqz (overallCoeffs, 1)

图中包含2个轴对象。axis对象1包含一个类型为line的对象。axis对象2包含一个类型为line的对象。

使用RLS滤波器消除添加到未知系统的加性噪声n。RLS滤波器调整其系数,直到其传递函数与未知系统的传递函数尽可能接近。自适应滤波器的输出与未知系统的输出之间的差值为误差信号e,表示加性白噪声。使误差信号最小化是自适应滤波器的目标。

请注意如果你正在使用R2016a或更早的版本,用等价的步骤语法替换每个对象调用。例如,obj(x)变成步骤(obj,x)

初始化

创建一个数字信号处理器系统对象™表示未知的系统。创建一个dsp。RLSFilter对象并将长度设置为11个抽头。将方法设置为“户主RLS”.创建一个正弦波来表示添加到未知系统中的噪声。在时间范围内查看信号。

帧大小=100;NIter=10;rls=dsp.RLSFilter(“长度”,11,...“方法”“户主RLS”); filt=dsp.FIRFilter(“分子”...fir1(10。5,综合成绩]));sinewave = dsp。SineWave (“频率”, 0.01,...“采样器”,1,...“SamplesPerFrame”, FrameSize);范围= timescope (“LayoutDimensions”(2 - 1),...“NumInputPorts”,2,...“TimeUnits”“秒”...“YLimits”,[-2.5 2.5],...“BufferLength”2 * FrameSize *硝石,...“动态显示”,1,...“ShowLegend”符合事实的...“ChannelNames”,{噪声信号的},...“动态显示”,2,...“ShowLegend”符合事实的...“ChannelNames”,{误差信号的});k=1:NIter x=randn(帧大小,1);d=filt(x)+正弦波();[y,e]=rls(x,d);w=rls.系数;作用域(d,e)结束(范围)

算法

dsp。RLSFilter系统对象,当传统的RLS选择后,递归计算最小二乘估计(RLS)FIR滤波器权重的。系统对象估计将输入信号转换为所需信号所需的滤波器权重或系数。输入信号可以是标量或列向量。所需信号必须具有与输入信号相同的数据类型、复杂性和维数。相应的RLS滤波器以ma表示trix表格asPn) :

k n λ 1 P n 1 u n 1 + λ 1 u H n P n 1 u n y n w T n 1 u n e n d n y n w n w n 1 + k n e n P n λ 1 P n 1 λ 1 k n u H n P n 1

在λ-1表示指数加权因子的倒数。变量如下:

变量 描述
n 当前时间索引
un 步骤中缓冲输入样本的向量n
Pn 阶跃逆相关矩阵的共轭n
kn 步进增益矢量n
k*n 复共轭k
wn 阶跃滤波器抽头估计向量n
y(n 步骤中的过滤输出n
e(n) 阶跃估计误差n
d (n) 期望的阶跃响应n
λ 遗忘因子

uwk都是列向量。

参考文献

[1] 我是海斯,统计数字信号处理与建模,纽约:威利,1996年。

[2] 海金,自适应滤波理论,第四版,上鞍河,NJ: Prentice Hall, 2002。

[3] A.A.Rontogiannis和S.Theodoridis,“逆因式分解自适应最小二乘算法,”信号处理号,第52卷。1,第35-47页,1996年7月。

[4] S.C. Douglas,“数字稳健的O(N)2使用最小二乘预白化的RLS算法声学、语音和信号处理,土耳其伊斯坦布尔,vol. I, pp. 412-415, 2000年6月。

A. H.赛义德,自适应滤波的基础,新泽西州霍博肯:约翰·威利父子公司,2003年。

扩展能力

在R2013a中引入