📄 lms.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 + -