基于RLS算法的逆系统辨识
这个例子演示了使用这里显示的逆系统识别模型的RLS自适应算法。
级联自适应滤波器与未知滤波器导致自适应滤波器收敛到未知系统的逆解。
如果未知系统和自适应滤波器的传递函数为H(z),G(z)时,所测信号与级联系统信号之间的误差达到最小时G (z) H (z) =1.要使这个关系成立,G(z)必须等于1/H (z),即未知系统传递函数的逆。
为了证明这是正确的,创建一个信号年代输入到级联滤波器对。
S = randn(3000,1);
在级联滤波器的情况下,未知滤波器导致信号在两个滤波器之后到达总和点的延迟。为了防止自适应滤波器试图适应它还没有看到的信号(相当于预测未来),将期望的信号延迟12个样本,这是未知系统的顺序。
一般来说,您不知道您试图识别的系统的顺序。在这种情况下,延迟所需信号的样本数等于自适应滤波器的一半阶数。延迟输入需要提前12个零值样本到输入年代
.
延迟= 0 (12,1);D =[延迟;s (1:2988)];连接延迟和信号。
你必须保持你想要的信号向量d
长度和x
,因此调整信号元素计数,以允许延迟样本。
虽然不是一般情况,但对于这个例子,您知道未知滤波器的阶数,所以添加一个等于未知滤波器阶数的延迟。
对于未知系统,使用低通12阶FIR滤波器。
filt = dsp.FIRFilter;filt。分子= fir1(12,0.55,“低”);
过滤年代
为自适应算法功能提供输入数据信号。
X = filt(s);
若要使用RLS算法,请创建dsp。RLSFilter
对象,并将其长度
,ForgettingFactor
,InitialInverseCovariance
属性。
有关准备RLS算法对象的输入条件的详细信息,请参见dsp。RLSFilter
.
P0 = 2 *眼(13);Lambda = 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(过滤器.分子,b);freqz (overallCoeffs, 1)
另请参阅
对象
相关的话题
参考文献
[1]海耶斯,蒙森H,统计数字信号处理与建模“,.霍博肯,新泽西州:John Wiley & Sons, 1996,第493 - 552页。
海金,西蒙,自适应滤波理论.上马鞍河,新泽西州:Prentice-Hall, Inc., 1996。