www.gusucode.com > nnet 案例源码 matlab代码程序 > nnet/demosm2.m

    %% Two-Dimensional Self-organizing Map
% As in DEMOSM1, this self-organizing map will learn to represent different
% regions of the input space where input vectors occur.  In this example, however,
% the neurons will arrange themselves in a two-dimensional grid, rather than a
% line.
%
% Copyright 1992-2012 The MathWorks, Inc.

%%
% We would like to classify 1000 two-element vectors occurring in a rectangular
% shaped vector space.

X = rands(2,1000);
plot(X(1,:),X(2,:),'+r')

%%
% We will use a 5 by 6 layer of neurons to classify the vectors above. We would
% like each neuron to respond to a different region of the rectangle, and
% neighboring neurons to respond to adjacent regions.
%
% The network is configured to match the dimensions of the inputs. This
% step is required here because we will plot the initial weights. Normally
% configuration is performed automatically by TRAIN.

net = selforgmap([5 6]);
net = configure(net,X);

%%
% We can visualize the network we have just created with PLOTSOMPOS.
% 
% Each neuron is represented by a red dot at the location of its two weights.
% Initially all the neurons have the same weights in the middle of the vectors,
% so only one dot appears.

plotsompos(net)

%%
% Now we train the map on the 1000 vectors for 1 epoch and replot the network
% weights.
% 
% After training, note that the layer of neurons has begun to self-organize so
% that each neuron now classifies a different region of the input space, and
% adjacent (connected) neurons respond to adjacent regions.

net.trainParam.epochs = 1;
net = train(net,X);
plotsompos(net)

%%
% We can now use SIM to classify vectors by giving them to the network and
% seeing which neuron responds.
% 
% The neuron indicated by "a" responded with a "1", so x belongs to that class.

x = [0.5;0.3];
y = net(x)