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

📄 lms.m

📁 神经网络中lms算法的matlab实现和在分类中的应用
💻 M
字号:
%%%%%%%%%%%%%%%%%%%%%
%Widrow的严格递推算法%
%%%%%%%%%%%%%%%%%%%%%
%clear all;
%close all;
function wk=lms(ft)
n=100; %散点的个数 
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('随机取得的输入向量');
sh(:,1)=x';    %第一类圆的100个输入值放到sh中
sh(:,2)=y';
ch(:,1)=m';    %第二类圆的100个输入放到ch中
ch(:,2)=n';
pc=zeros(2,2); %求自相关阵R
sp=zeros(1,2); %求互相关向量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是圆中取得的随机矢量的自相关阵R
pp=sp/200;      % pp是圆中取得的随机矢量的互相关向量P
wbest=pp*inv(pr); %最佳权向量
emin=1-pp*wbest'; %计算均方误差最小值
eigenvalues=max(eig(pr));%计算最大特征值
%ft=1/eigenvalues-0.01;   %选定一个步幅,可以根据实际情况修改
wk=rand(1,2);
eb=zeros(1,2);
pa=0;
for k=1:200;      %确定学习次数
     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;   %得到学习所得权向量
     eb=zeros(1,2);
     pa=0;
end
p=1:200;
figure(2);
plot(p,eav,'r');
title('均方误差随学习步数的变化曲线');

⌨️ 快捷键说明

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