📄 sofm.asv
字号:
% ==========================================================
%
% Neural Networks A Classroom Approach
% Satish Kumar
% Copyright Tata McGraw Hill, 2004
%
% MATLAB code that implements the SOFM algorithm
% Reference: Table 12.8;Page 561
%
% ==========================================================
% MATLAB PROGRAM TI SIMULATE THE SELF ORGANIZING FEATURE MAP
clear all
numpats = 500;
data = 2*[rand(1,numpats);rand(1,numpats)]-1;
figure(1);
plot(data(1,:),data(2,:),'b.');
drawnow
% maxneuron=8; % max number of neurons on an axis
% instarx=2*rand(maxneuron)-1; % initialise wts
% instary=2*rand(maxneuron)-1;
%
% nbd = 6; % define the max nbd size
% contractnbd = 1; % define contraction rates
% count = 0; % count to contract every 200 epochs
% figure(2);
% axis([-1 1 -1 1]);
%
% for epoch = 1:numpats*maxneuron
% count = count + 1;
%
% eta=0.9*(1 - epoch/1000);
%
% if (epoch > 999) eta = 0.005;
% end
%
% for p = 1:numpats
% for indx = 1:maxneuron
% for indy = 1:maxneuron
% dist(indx,indy)=sqrt((instarx(indx,indy)-data(1,p))^2 ...
% + (instary(indx,indy)-data(2,p))^2);
% end
% end
%
% [val1,rows]=min(dist);
% [val2,cols]=min(val1);
% indxmin=rows(cols);
% indymin=cols;
%
% for i=indxmin-nbd:indxmin+nbd
% for j=indymin-nbd:indymin+nbd
% if((i >= 1)&(i<=maxneuron)&(j>=1)&(j<=maxneuron))
% instarx(i,j)=instarx(i,j)+eta*(data(1,p)-instarx(i,j));
% instary(i,j)=instary(i,j)+eta*(data(2,p)-instary(i,j));
% end
% end
% end
% end
%
% for i=1:maxneuron
% plot(instarx(i,:),instary(i,:),'b.');
% end
%
% for i=1:maxneuron
% for j=1:maxneuron
% nb=[1 i-1 j
% 2 i+1 j
% 3 i j-1
% 4 i j+1];
% for k=1:4
% if((nb(k,2)>=1)&(nb(k,2)<=maxneuron)&(nb(k,3)>=1)&(nb(k,3)<=maxneuron))
% line([instarx(i,j),instarx(nb(k,2),nb(k,3))],...
% [instary(i,j),instary(nb(k,2),nb(k,3))]);
% end
% end
% end
% end
%
% drawnow
%
% if count == 200
% nbd = nbd - contractnbd;
% if (nbd < 1) nbd = 1;
% end
% count = 0;
% end
% epoch
% end
%
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -