主要内容

dsp。RLSFilter

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

描述

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

过滤输入的每个通道:

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

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

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

创建

描述

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

例子

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

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

属性

全部展开

除非另有说明,属性是不可努力,这意味着在调用对象后无法更改其值。当您调用它们时,对象锁定释放函数打开它们。

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

有关更改属性值的更多信息,请参见在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自适应滤波器系数的初始值指定为标量或等于的长度矢量长度属性值。

可调:是的

数据类型:|

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

可调:是的

依赖关系

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

数据类型:|

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

可调:是的

依赖关系

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

数据类型:|

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

可调:是的

依赖关系

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

数据类型:|

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

可调:是的

使用

描述

例子

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)

初始化

创建一个dsp。FIRFilter对象,该对象表示要标识的系统。通过信号x到FIR滤波器。未知系统的输出就是想要的信号d,即未知系统(FIR滤波器)输出与加性噪声信号之和n

filt = dsp。FIRFilter (“分子”,fir1(10,25));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 (的信号值);

比较权重

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

估计的滤波器权重与实际滤波器权重紧密匹配,确认在先前的信号图中看到的结果。

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

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

级联具有未知过滤器的自适应滤波器使自适应滤波器会聚到作为未知系统逆的解决方案。

若未知系统和自适应滤波器的传递函数为Hz) 和Gz时,期望信号与级联系统信号之间的测量误差达到最小G(z) × H (z) =1.对于这一关系是真的,Gz)必须等于1/赫兹),未知系统传递函数的逆。

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

s = randn (3000 1);

在级联滤波器外壳中,未知滤波器导致在两个过滤器后到达求和点的信号的延迟。为了防止自适应滤波器尝试适应它尚未看到的信号(等同于预测未来),延迟所需的信号12个样本,这是未知系统的顺序。

通常,您不知道您正在尝试识别的系统的顺序。在这种情况下,延迟所需信号的样本等于自适应滤波器的一半的样本。延迟输入需要将12个零值样本进行预订到输入年代

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

你必须保持期望的信号向量d与之相同x,因此调整信号元素计数以考虑延迟采样。

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

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

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

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

x = filt(年代);

要使用RLS算法,请创建dsp。RLSFilter对象,并设置其长度ForgettingFactor,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)

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

freqz (filt.Numerator, 1)

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

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

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

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

初始化

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

FrameSize = 100;硝石= 10;rls = dsp。RLSFilter (“长度”11“方法”房主RLS的);filt = dsp。FIRFilter (“分子”fir1(10[5,综合成绩]));sinewave = dsp。SineWave (“频率”,0.01,...“SampleRate”,1,“SamplesPerFrame”, FrameSize);范围= timescope (“LayoutDimensions”,[2 1],“NumInputPorts”2,...'不时'“秒”“YLimits”(-2.5 - 2.5),...'bufferLength',2 *框架化* niter,...“ActiveDisplay”,1,“ShowLegend”,真的,'ChannelNames', {噪声信号的},...“ActiveDisplay”2,“ShowLegend”,真的,'ChannelNames', {误差信号的});k = 1:NIter x = randn(FrameSize,1); / /D = filt(x) +正弦波();[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 step的逆相关矩阵n
kn 阶跃的增益向量n
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,pp。35-47,1996年7月。

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

[5] A. H. Sayed,自适应滤波的基础,霍博肯:约翰·威利父子公司,2003。

扩展功能

介绍了R2013a