?? lms.m
字號(hào):
%%%%%%%%%%%%%%%%%%%%%
%Widrow的嚴(yán)格遞推算法%
%%%%%%%%%%%%%%%%%%%%%
%clear all;
%close all;
function wk=lms(ft)
n=100; %散點(diǎn)的個(gè)數(shù)
R=1.7; %圓的半徑
Seta=0:0.01:2*pi;
X=1+R.*cos(Seta);
Y=1+R.*sin(Seta);
figure(1);
plot(X,Y) %畫出圓
axis square;
hold on;
r=R*sqrt(rand(1,n));
seta=2*pi*rand(1,n);
x=1+r.*sin(seta);
y=1+r.*cos(seta);
plot(x,y,'r*');
M=-1+R.*cos(Seta);
N=-1+R.*sin(Seta);
plot(M,N) %畫出圓
axis square;
rb=R*sqrt(rand(1,n));
setab=2*pi*rand(1,n);
m=-1+r.*sin(setab);
n=-1+r.*cos(setab);
plot(m,n,'g*');
grid on;
hold off;
title('隨機(jī)取得的輸入向量');
sh(:,1)=x'; %第一類圓的100個(gè)輸入值放到sh中
sh(:,2)=y';
ch(:,1)=m'; %第二類圓的100個(gè)輸入放到ch中
ch(:,2)=n';
pc=zeros(2,2); %求自相關(guān)陣R
sp=zeros(1,2); %求互相關(guān)向量P
for r=1:100
pc=pc+sh(r,:)'*sh(r,:)+ch(r,:)'*ch(r,:);
sp=sp+sh(r,:)-ch(r,:);
end
pr=pc/200; % pr是圓中取得的隨機(jī)矢量的自相關(guān)陣R
pp=sp/200; % pp是圓中取得的隨機(jī)矢量的互相關(guān)向量P
wbest=pp*inv(pr); %最佳權(quán)向量
emin=1-pp*wbest'; %計(jì)算均方誤差最小值
eigenvalues=max(eig(pr));%計(jì)算最大特征值
%ft=1/eigenvalues-0.01; %選定一個(gè)步幅,可以根據(jù)實(shí)際情況修改
wk=rand(1,2);
eb=zeros(1,2);
pa=0;
for k=1:200; %確定學(xué)習(xí)次數(shù)
for r=1:100;
eb=eb+((1-sh(r,:)*wk')*sh(r,:)+(-1-ch(r,:)*wk')*ch(r,:));
pa=pa+(1-sh(r,:)*wk')^2+(-1-ch(r,:)*wk')^2;
end
eav(k)=pa/200; %向量eav中是從1-200步的均方誤差
wk=wk+2*ft*eb/200; %得到學(xué)習(xí)所得權(quán)向量
eb=zeros(1,2);
pa=0;
end
p=1:200;
figure(2);
plot(p,eav,'r');
title('均方誤差隨學(xué)習(xí)步數(shù)的變化曲線');
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -