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

    %% Classification with a 2-Input Perceptron
% A 2-input hard limit neuron is trained to classify 5 input vectors into two
% categories.
%
% Copyright 1992-2014 The MathWorks, Inc.

%%
% Each of the five column vectors in X defines a 2-element input vectors and a
% row vector T defines the vector's target categories.  We can plot these
% vectors with PLOTPV.

X = [ -0.5 -0.5 +0.3 -0.1;  ...
      -0.5 +0.5 -0.5 +1.0];
T = [1 1 0 0];
plotpv(X,T);

%%
% The perceptron must properly classify the 5 input vectors in X into the two
% categories defined by T.  Perceptrons have HARDLIM neurons.  These neurons are
% capable of separating an input space with a straight line into two categories
% (0 and 1).
%
% Here PERCEPTRON creates a new neural network with a single neuron. The
% network is then configured to the data, so we can examine its
% initial weight and bias values. (Normally the configuration step can be
% skipped as it is automatically done by ADAPT or TRAIN.)

net = perceptron;
net = configure(net,X,T);

%%
% The input vectors are replotted with the neuron's initial attempt at
% classification.
%
% The initial weights are set to zero, so any input gives the same output and
% the classification line does not even appear on the plot.  Fear not... we are
% going to train it!

plotpv(X,T);
plotpc(net.IW{1},net.b{1});

%%
% Here the input and target data are converted to sequential data (cell
% array where each column indicates a timestep) and copied three times
% to form the series XX and TT.
%
% ADAPT updates the network for each timestep in the series and returns
% a new network object that performs as a better classifier.

XX = repmat(con2seq(X),1,3);
TT = repmat(con2seq(T),1,3);
net = adapt(net,XX,TT);
plotpc(net.IW{1},net.b{1});

%%
% Now SIM is used to classify any other input vector, like [0.7; 1.2]. A plot of
% this new point with the original training set shows how the network performs.
% To distinguish it from the training set, color it red.

x = [0.7; 1.2];
y = net(x);
plotpv(x,y);
point = findobj(gca,'type','line');
point.Color = 'red';

%%
% Turn on "hold" so the previous plot is not erased and plot the training set
% and the classification line.
%
% The perceptron correctly classified our new point (in red) as category "zero"
% (represented by a circle) and not a "one" (represented by a plus).

hold on;
plotpv(X,T);
plotpc(net.IW{1},net.b{1});
hold off;