最近做线性预测分析了解了下LMS算法,但是其中的期望输出不知道怎么计算,看了很多文章只提了这个是期望输出,怎么得到的却没有解释清楚。
LMS(Least Mean Square)算法简介如图,LMS大致原理就是利用梯度下降法来调整参数从而减少预测误差e。下面直接上代码,这是大部分文章中出现的代码,一般直接使用变量d(n),但是没有定义。具体可以参考:
https://baike.baidu.com/item/LMS%E7%AE%97%E6%B3%95/3329567?fr=aladdin
%x(n)为输入信号,y(n)为输出信号,d(n)为期望信号,e(n)为误差,e2(n)为误差平方
LMS的期望输出
y(n) = w1(n)*x(n-1)+w2(n)*x(n-2)+x(n); %实际输出
e(n) = d(n)-y(n); %预测误差
w1(n+1) = w1(n)+2*u*e(n)*x(n-1); %更新权重
w2(n+1) = w2(n)+2*u*e(n)*x(n-2); %更新权重
e2(n) = e2(n) + e(n).^2; %误差平方
LMS算法中我们已知的有输入信号x,和预测输出信号y,实际情况下是不知道期望输出的,如果知道了期望输出那么就没有进行滤波的必要了。因此需要用一些方法来估计期望输出,我查阅了一些文献,总结了几种方法如下:
1. 使用延迟后的输入信号作为参考信号d,即d(n) = x(n-i),其中i为延迟量,可正可负(用于自适应预测)
2. 期望信号为信号与噪声之和,即d(n) = x(n) + s(n),其中s(n)为训练时使用的噪声(用于自适应干扰抵消器,需要噪声与输入信号不相关)
3. 直接用输出代替期望信号,即d(n) = x(n)
4. 从x(n)中估计d(n) ,d(n) = y(n) + v(n),其中v(n) = w(n)–wo ,wo是维纳滤波器的最优权值。
————————————————————————————分割线————————————————————————-
贴一下第4种方法的计算过程:
第一步:将误差改写成矩阵形式
第二步:将误差化为d(n)的均值表示形式
第三步:为了简化上式,定义两个矩阵
第四步:梯度下降求解
第五步:求出最优矩阵wo