这个例子演示了使用逆系统辨识模型的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。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)
海耶斯(Monson H. Hayes)统计数字信号处理与建模.霍博肯:John Wiley & Sons, 1996,第493 - 552页。
[2]微积分,西门,自适应滤波器理论.上鞍河,新泽西州:Prentice-Hall, Inc., 1996。