📄 lms_demo.m
字号:
% LMS algorithm democlear allclose allhold off%channel system ordersysorder = 5 ;% Number of system pointsN=2000;inp = randn(N,1);n = randn(N,1);[b,a] = butter(2,0.25);Gz = tf(b,a,-1);%This function is submitted to make inverse Z-transform (Matlab central file exchange)%The first sysorder weight value%h=ldiv(b,a,sysorder)';% if you use ldiv this will give h :filter weights to beh= [0.0976; 0.2873; 0.3360; 0.2210; 0.0964;];y = lsim(Gz,inp);%add some noisen = n * std(y)/(10*std(n));d = y + n;totallength=size(d,1);%Take 60 points for trainingN=60 ; %begin of algorithmw = zeros ( sysorder , 1 ) ;for n = sysorder : N u = inp(n:-1:n-sysorder+1) ; y(n)= w' * u; e(n) = d(n) - y(n) ;% Start with big mu for speeding the convergence then slow down to reach the correct weights if n < 20 mu=0.32; else mu=0.15; end w = w + mu * u * e(n) ;end %check of resultsfor n = N+1 : totallength u = inp(n:-1:n-sysorder+1) ; y(n) = w' * u ; e(n) = d(n) - y(n) ;end hold onplot(d)plot(y,'r');title('System output') ;xlabel('Samples')ylabel('True and estimated output')figuresemilogy((abs(e))) ;title('Error curve') ;xlabel('Samples')ylabel('Error value')figureplot(h, 'k+')hold onplot(w, 'r*')legend('Actual weights','Estimated weights')title('Comparison of the actual weights and the estimated weights') ;axis([0 6 0.05 0.35])
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -