⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lms.m

📁 LMS 算法MATLAB代码,可以经常LMS的计算.这个是.M文件.希望大家多交流
💻 M
字号:
function [W,e,Xout] = LMS(x,d,N,mu,Xin,Winit,K);
% [W,e,Xout] = LMS(x,d,N,mu,Xin,Winit,K);
%
% Implementation of the least mean square algorithm,
% which also works for complex signals.
%
% Inputs:
% 	x	reference signal
%       d	desired signal
% 	N	# of taps in filter
%	mu	step size
% 	Xin	initialization of state vector (opt)
%	Winit	initialization of filter weights (opt)
%       K       update every Kth iteration (opt)
%
% Outputs:
%	W	adapted filter weights
%	e	error signal
%	Xout	last state vector
%
% St.Weiss, SIPI-USC, 16.2.1997


if (~exist('Winit')),
   W = zeros(N,1);
else
   if length(Winit)~=N,
      error('weight initialization must match filter length');
   end;
   W = Winit;
endif;

if (~exist('K'))
   K = 1;
endif;   

Lx = length(x);
[m,n] = size(x);
if n>m,
   x = x.';
endif;

if (~exist('Xin')),
   x = [zeros(N-1,1); x];
else
   if length(Xin)~=(N-1) 
      error('state initialization must match filter length minus one');
   endif;
   x = [Xin; x];
endif;   	

if K == 1,
end for k = 1:Lx,              % update every sampling period
    X = x(k+N-1:-1:k);
    y = W'*X;
    e(k) = d(k)-y; 
     endfor;
    W = W+2*mu*conj(e(k))*X;
 
endif;

Xout = x(Lx+1:Lx+N-1);	  


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -