主要内容

dsp。RLSFilter

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

描述

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

过滤输入的每个通道:

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

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

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

创建

描述

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

例子

rlsFilt= dsp.rlsfilter(len返回一个RLS过滤器系统对象,rlsFilt.这个System对象具有长度属性设置为len

rlsFilt= dsp.rlsfilter(名称,值使用每个指定属性设置为指定值的RLS过滤系统对象。用单引号括起每个属性名称。未指定的属性具有默认值。

特性

全部展开

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

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

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

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

将RLS滤波器系数矢量的长度指定为标量正整数值。此属性是不可调优的。

数据类型:单身的||int8|int16|int32|int64|uint8.|uint16|UINT32.|UINT64

指定滑动窗口的宽度为大于或等于的标量正整数值长度属性值。此属性是不可调优的。

依赖性

该属性仅在方法属性设置为滑动窗口RLS住户滑动窗RLS

数据类型:单身的||int8|int16|int32|int64|uint8.|uint16|UINT32.|UINT64

将RLS忘记因子指定为标量正数值小于或等于1.将此属性值设置为1表示无限内存,同时调整以查找新过滤器。

可调:是的

数据类型:单身的|

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

可调:是的

数据类型:单身的|

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

可调:是的

依赖性

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

数据类型:单身的|

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

可调:是的

依赖性

该属性仅在方法属性设置为住户RLS.住户滑动窗RLS

数据类型:单身的|

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

可调:是的

依赖性

该属性仅在方法属性设置为QR-分解RLS

数据类型:单身的|

指定过滤器系数值是否应该被锁定。当您将此属性设置为真正的,则不更新过滤系数,其值保持不变。默认值为(连续更新的滤波器系数)。

可调:是的

使用

描述

例子

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

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

输入参数

全部展开

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

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

数据类型:单身的|
复数的支持:金宝app是的

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

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

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

数据类型:单身的|
复数的支持:金宝app是的

输出参数

全部展开

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

数据类型:单身的|
复数的支持:金宝app是的

输出信号之间的差异y和所需的信号d,作为标量或列向量返回。RLS滤波器的目标是最小化这个误差。该对象调整其系数,使其收敛到最优滤波器系数,以产生与所需信号密切匹配的输出信号。了解更多细节e计算,看算法.访问RLS滤波器系数,调用rlsfilt.cofficients.在您将输入和所需的信号传递给对象之后。

数据类型:单身的|
复数的支持:金宝app是的

对象的功能

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

发行版(obj)

全部展开

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

例子

全部折叠

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

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

初始化

创建一个dsp。FIRFilter对象,该对象表示要标识的系统。通过信号x到冷杉过滤器。未知系统的输出是所需的信号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,“ForgettingFactor”, 0.98);[y, e] = rls (x, d);w = rls.Coefficients;

绘制结果

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

绘图(1:1000,[D,Y,E]);标题(“FIR滤波器的系统识别”);传奇(“想要的”“输出”“错误”);包含(“时间指数”);ylabel(的信号值);

图中包含一个坐标轴。以FIR滤波器系统识别为标题的轴包含3个线型对象。这些对象表示期望、输出、错误。

比较权重

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

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

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

图中包含一个坐标轴。轴包含2个型杆的物体。这些对象代表实际,估计。

这个例子演示了使用逆系统辨识模型的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 = filt;

要使用RLS算法,请创建dsp。RLSFilter对象,并设置其长度忘记应答器,InitialInverseCovariance属性。

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

P0 = 2 *眼(13);λ= 0.99;rls = dsp.rlsfilter(13,“ForgettingFactor”λ,......'InitialInversecovariance'、p0);

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

早期的自适应滤波器的示例使用滤波后的噪声作为所需信号。在这种情况下,过滤噪声(x)携带未知系统的信息。高斯分布,方差为1,无滤波噪声d是想要的信号。运行这个自适应过滤器的代码是:

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

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

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

b = rls.Coefficients;

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

freqz (b, 1)

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

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

freqz (filt.Numerator, 1)

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

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

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

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

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

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

初始化

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

框架= 100;niter = 10;rls = dsp.rlsfilter(“长度”,11,'方法'房主RLS的);filt = dsp.firfilter(“分子”,FiR1(10,[。5,.75]));sinewave = dsp.sinewave(“频率”, 0.01,......'采样率', 1“SamplesPerFrame”, FrameSize);范围= timescope (“LayoutDimensions”(2 - 1),“NumInputPorts”2,......“TimeUnits”“秒”“YLimits”(-2.5 - 2.5),......“BufferLength”2 * FrameSize *硝石,......'Activedisplay', 1“ShowLegend”,真的,“ChannelNames”, {噪声信号的},......'Activedisplay'2,“ShowLegend”,真的,“ChannelNames”, {误差信号的});k = 1:niter x = Randn(框架,1);d = filt(x)+ sinewave();[y, e] = rls (x, d);w = rls.Coefficients;范围(D,E)结束(范围)

算法

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

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
λ 遗忘因子

uw,k都是列向量。

参考文献

[1] M海耶斯,统计数字信号处理与建模,纽约:Wiley, 1996。

[2]微积分,自适应滤波器理论,第四版,上鞍河,NJ: Prentice Hall, 2002。

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