资源描述:
《LMS自适应滤波器.docx》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、LMS自适应滤波器是使滤波器的输出信号与期望响应之间的误差的均方值为最小,因此称为最小均方(LMS)自适应滤波器。function [yn,W,en]=LMS(xn,dn,M,mu,itr)% LMS(Least Mean Squre)算法% 输入参数:% xn 输入的信号序列 (列向量)% dn 所期望的响应序列 (列向量)% M 滤波器的阶数 (标量)% mu 收敛因子(步长) (标量) 要求大于0,小于x
2、n的相关矩阵最大特征值的倒数 % itr 迭代次数 (标量) 默认为xn的长度,M3、递归迭代的次数为xn的长度 itr = length(xn);elseif nargin == 5 % 5个时满足Mlength(xn)
4、 itr5、 = zeros(M,itr); % 每一行代表一个加权参量,每一列代表-次迭代,初始为0% 迭代计算for k = M:itr % 第k次迭代 x = xn(k:-1:k-M+1); % 滤波器M个抽头的输入 y = W(:,k-1).' * x; % 滤波器的输出 en(k) = dn(k) - y ; % 第k次迭代的误差 % 滤波器权值计算的迭代式 W(:,k)
6、 = W(:,k-1) + 2*mu*en(k)*x;end% 求最优时滤波器的输出序列yn = inf * ones(size(xn));for k = M:length(xn) x = xn(k:-1:k-M+1); yn(k) = W(:,end).'* x;end LMS函数的一个实例:%function main()close all% 周期信号的产生 t=0:99;xs=10*sin(0.5*t);figure;subplot(2,1,1);plot(t,xs)
7、;grid;ylabel('幅值');title('it{输入周期性信号}');% 噪声信号的产生randn('state',sum(100*clock));xn=randn(1,100);subplot(2,1,2);plot(t,xn);grid;ylabel('幅值');xlabel('时间');title('it{随机噪声信号}');% 信号滤波xn = xs+xn;xn = xn.' ; % 输入信号序列dn = xs.' ; % 预期结果序列M = 20 ; % 滤波器的阶数r
8、ho_max = max(eig(xn*xn.')); % 输入信号相关矩阵的最大特征值mu = rand()*(1/rho_max) ; % 收敛因子 0 < mu < 1/rho[yn,W,en] = LMS(xn,dn,M,mu);% 绘制滤波器输入信号figure;subplot(2,1,1);plot(t,xn);grid;ylabel('幅值');xlabel('时间');title('it{滤波器输入信号}');% 绘制自适应滤波器输出信号subplot(2,1,2);plot(
9、t,yn);grid;ylabel('幅值');xlabel('时间');title('it{自适应滤波器输出信号}');% 绘制自适应滤波器输出信号,预期输出信号和两者的误差figure plot(t,yn,'b',t,dn,'g',t,dn-yn,'r');grid;legend('自适应滤波器输出','预期输出','误差');ylabel('幅值');xlabel('时间');title('it{自适应滤波