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

    %% Adaptive Linear Prediction
% This example illustrates how an adaptive linear layer can learn
% to predict the next value in a signal, given the current and
% last four values.

% Copyright 1992-2012 The MathWorks, Inc.

%% Defining a Wave Form
% Here two time segments are defined from 0 to 6 seconds in steps
% of 1/40 of a second.

time1 = 0:0.025:4;      % from 0 to 4 seconds
time2 = 4.025:0.025:6;  % from 4 to 6 seconds
time = [time1 time2];  % from 0 to 6 seconds

%%
% Here is a signal which starts at one frequency but then transitions
% to another frequency.

signal = [sin(time1*4*pi) sin(time2*8*pi)];
plot(time,signal)
xlabel('Time');
ylabel('Signal');
title('Signal to be Predicted');

%% Setting up the Problem for a Neural Network
% The signal convert is then converted to a cell array.  Neural Networks
% represent timesteps as columns of a cell array, do distinguish them from
% different samples at a given time, which are represented with columns
% of matrices.

signal = con2seq(signal);

%%
% To set up the problem we will use the first five values of the
% signal as initial input delay states, and the rest for inputs.

Xi = signal(1:5);
X = signal(6:end);
timex = time(6:end);

%%
% The targets are now defined to match the inputs.  The network is to
% predict the current input, only using the last five values.

T = signal(6:end);

%% Creating the Linear Layer
% The function *linearlayer* creates a linear layer with a single
% neuron with a tap delay of the last five inputs.

net = linearlayer(1:5,0.1);
view(net)

%% Adapting the Linear Layer
%
%  The function *adapt* simulates the network on the input, while
%  adjusting its weights and biases after each timestep in response
%  to how closely its output matches the target.
%
%  It returns the update networks, it outputs, and its errors.

[net,Y] = adapt(net,X,T,Xi);

%%
% The output signal is plotted with the targets.

figure
plot(timex,cell2mat(Y),timex,cell2mat(T),'+')
xlabel('Time');
ylabel('Output -  Target +');
title('Output and Target Signals');

%%
% The error can also be plotted.

figure
E = cell2mat(T)-cell2mat(Y);
plot(timex,E,'r')
hold off
xlabel('Time');
ylabel('Error');
title('Error Signal');

%%
% Notice how small the error is except for initial errors and the
% network learns the systems behavior at the beginning and after
% the system transition.
%
% This example illustrated how to simulate an adaptive linear network which
% can predict a signal's next value from current and past values despite
% changes in the signals behavior.