%(1)问题的提出
%首先应用rands()函数随计生成1000个输入数据,形成输入向量P,如图
p=rands(2,1000);
plot(p(1,:),p(2,:),'r');
axis([-1 1 -1 1]);
title('输入向量');
xlabel('p(1)');
ylabel('p(2)');
%(2)网络设计
%设计一个二维自组织特征影射网络,其神经元层有30个神经元,代表输入响亮的类别.
%二维神经元为5*6的排列形式,其相互距离应为MANHATTAN距离函数mandist()计算,未经
%训练的网络所有神经元的权值均位于向量中兴,如图2
net=newsom([0 1;0 1],[5 6]);
cla
plotsom(net.iw{1,1},net.layers{1}.distances);
axis([0 1 0 1]);
title('初始网络权值');
xlabel('w(i,1)');
ylabel('w(i,2)');
%(3)网络训练
%设置训练参数,应用train()函数进行网络训练,训练过程中网络权值开始向输入向量移动.
net.trainParam.epochs=1;
net=train(net,p);
%TRAINR,Epoch 0/1;
%TRAINR,Epoch 1/1;
%TRAINR,Maximum epoch reached.;
%网络测试
%经过训练后,网络权值经过排序逐步缩小领域的大小,最后竞争层的神经的神经元通过调整,每个神经元都代表一个输入区域
%邻近神经元权值响亮的定位也反映了输入向量的拓扑结构.下面绘制出训练后网络的权值,入图
cla
plotsom(net.iw{1,1},net.layers{1}.distances)
axis([-1 1 -1 1]);
title('训练后的网络');
xlabel('w(i,1)');
ylabel('w(i,2)');
%从图中可以看出,训练后的网络将输入向量自由排序成了30个类别.下面应用向量psim()函数仿真对网络进行测试.
p=[0.5;0.3];
a=sim(net,p);