LMS學習函式MATLAB程式碼
阿新 • • 發佈:2018-12-21
clear,clc close all P=-5:5; d=3*P-7; randn('state',2); d=d+randn(1,length(d))*1.5 P=[ones(1,length(P));P] lp.lr=0.01; MAX=150; ep1=0.1; ep2=0.0001; w=[0,0]; for i=1:MAX fprintf('第%d次迭代:\n',i) e=d-purelin(w*P); ms(i)=mse(e); ms(i) if(ms(i)<ep1) fprintf('均方差小於指定數而終止\n'); break; end dW=learnwh([],P,[],[],[],[],e,[],[],[],lp,[]); if(norm(dW)<ep2) fprintf('權值變化小於指定數而終止\n'); break; end w=w+dW end fprintf('演算法收斂於:\nw=(%f,%f),MSE: %f\n',w(1),w(2),ms(i)); figure; subplot(2,1,1); plot(P(2,:),d,'o');title('散點與直線擬合結果'); xlabel('x');ylabel('y'); axis([-6,6,min(d)-1,max(d)+1]); x1=-5:.2:5; y1=w(1)+w(2)*x1; hold on; plot(x1,y1); subplot(212) semilogy(1:i,ms,'-o'); xlabel('迭代次數');ylabel('MSE');title('均方差下降曲線');