www.gusucode.com > nnet 案例源码 matlab代码程序 > nnet/UgCustArchExample.m
%% UgCustArch % %% preprocess data % Copyright 2015 The MathWorks, Inc. [u,y] = robotarm_dataset; d1 = [1:2]; d2 = [1:2]; S1 = 5; narx_net = narxnet(d1,d2,S1); narx_net.divideFcn = ''; narx_net.inputs{1}.processFcns = {}; narx_net.inputs{2}.processFcns = {}; narx_net.outputs{2}.processFcns = {}; narx_net.trainParam.min_grad = 1e-10; [p,Pi,Ai,t] = preparets(narx_net,u,{},y); narx_net = train(narx_net,p,t,Pi); narx_net_closed = closeloop(narx_net); view(narx_net_closed) %% create system mrac_net = feedforwardnet([S1 1 S1]); mrac_net.layerConnect = [0 1 0 1;1 0 0 0;0 1 0 1;0 0 1 0]; mrac_net.outputs{4}.feedbackMode = 'closed'; mrac_net.layers{2}.transferFcn = 'purelin'; mrac_net.layerWeights{3,4}.delays = 1:2; mrac_net.layerWeights{3,2}.delays = 1:2; mrac_net.layerWeights{3,2}.learn = 0; mrac_net.layerWeights{3,4}.learn = 0; mrac_net.layerWeights{4,3}.learn = 0; mrac_net.biases{3}.learn = 0; mrac_net.biases{4}.learn = 0; %% turn off division mrac_net.divideFcn = ''; mrac_net.inputs{1}.processFcns = {}; mrac_net.outputs{4}.processFcns = {}; mrac_net.name = 'Model Reference Adaptive Control Network'; mrac_net.layerWeights{1,2}.delays = 1:2; mrac_net.layerWeights{1,4}.delays = 1:2; mrac_net.inputWeights{1}.delays = 1:2; %% configure with training data [refin,refout] = refmodel_dataset; ind = 1:length(refin); plot(ind,cell2mat(refin),ind,cell2mat(refout)) mrac_net = configure(mrac_net,refin,refout); %% insert weights mrac_net.LW{3,2} = narx_net_closed.IW{1}; mrac_net.LW{3,4} = narx_net_closed.LW{1,2}; mrac_net.b{3} = narx_net_closed.b{1}; mrac_net.LW{4,3} = narx_net_closed.LW{2,1}; mrac_net.b{4} = narx_net_closed.b{2}; %% zero output weights mrac_net.LW{2,1} = zeros(size(mrac_net.LW{2,1})); mrac_net.b{2} = 0; %% associate plots and training fct mrac_net.plotFcns = {'plotperform','plottrainstate',... 'ploterrhist','plotregression','plotresponse'}; mrac_net.trainFcn = 'trainlm'; %% view final network view(mrac_net) %% train network [x_tot,xi_tot,ai_tot,t_tot] = ... preparets(mrac_net,refin,{},refout); mrac_net.trainParam.epochs = 50; mrac_net.trainParam.min_grad = 1e-10; [mrac_net,tr] = train(mrac_net,x_tot,t_tot,xi_tot,ai_tot); %% define input testin = skyline(1000,50,200,-.7,.7); testinseq = con2seq(testin); testoutseq = mrac_net(testinseq); testout = cell2mat(testoutseq); figure plot([testin' testout'])