LMS算法Matlab程序.doc
- 文档编号:2579326
- 上传时间:2022-11-02
- 格式:DOC
- 页数:3
- 大小:40.50KB
LMS算法Matlab程序.doc
《LMS算法Matlab程序.doc》由会员分享,可在线阅读,更多相关《LMS算法Matlab程序.doc(3页珍藏版)》请在冰豆网上搜索。
LMS滤波器MATLAB函数
function[yn,W,en]=LMSPrediction(xn,M,mu,k)
%LMS(LeastMeanSqure)算法
%输入参数:
%xn输入的信号序列(列向量)
%M滤波器的阶数抽头数(标量)
%mu收敛因子(步长)(标量)要求大于0,小于xn的相关矩阵最大特征值的倒数
%k预测阶数(标量)
%输出参数:
%W滤波器的权值矩阵(矩阵)
%大小为Mxitr,
%en误差序列(itrx1)(列向量)
%yn实际输出序列(列向量)
%参数个数必须为4个或5个
itr=length(xn);%4个时递归迭代的次数为xn的长度
%初始化参数
en=zeros(itr,1);%误差序列,en(k)表示第k次迭代时预期输出与实际输入的误差
W=zeros(M,itr);%每一行代表一个加权参量,每一列代表-次迭代,初始为0
%迭代计算
yn=zeros(size(xn)+k,1);
forn=(M+k):
itr%第n次迭代
xn_k=(-1)*xn((n-k):
-1:
(n-k-M+1));%-x(n-k)-x(n-k-1)....-x(n-k-M+1)
en(n)=xn(n)-W(:
n-1).'*xn_k;%第n次迭代的误差
%滤波器权值计算的迭代式
W(:
n)=W(:
n-1)+mu*en(n)*xn_k;
x=(-1)*xn(n:
-1:
n-M+1);%滤波器M个抽头的输入x=-x(n)-x(n-1)....-x(n-m+1)
yn(n+k)=W(:
n).'*x;%滤波器的预测输出
end
LMS算法试用程序
%functionmain()
clear;
clc;
%信号的产生
load'E:
\skeleton\角度计算数据\角度计算数据\leftknee8p36m.mat';
Fs=120;%Samplingfrequency
T=1/Fs;%Sampletime
xs=beta;
xs(159:
160)=xs(159:
160)+50;
L=length(xs);%Lengthofsignal
t=(0:
L-1)*T;%Timevector
%信号滤波
xn=xs.';%输入信号序列列向量
dn=xn;%预期结果序列列向量
M=20;%滤波器的阶数
k=0;%预测阶数
mu=0.000009;%收敛因子0 [yn,W,en]=LMSPrediction(xn,M,mu,k); [MAXet,RMSet,MAEet,PR,STS]=AccuaryCalculate(xn,yn(1: L),M,k); %绘制自适应滤波器输出信号,预期输出信号和两者的误差 figure plot(t,yn(k+1: end),'-r',t,dn,'-b');grid; legend('LMS滤波输出yn','原始信号xn'); ylabel('幅值'); xlabel('时间'); title('na=20k=1u=0.000009STS=0.0789PR=88.88%'); 运行结果
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- LMS 算法 Matlab 程序