yychanaz 发表于 2009-9-10 00:20

一matlab程序中一点点的小问题

神经网络预测
% 数据为1986年到2000年的交通量 ,网络为3输入,1输出
% 15组数据,其中9组为正常训练数据,3组为变量数据,3组为测试数据
%by akjuan
%all rights preserved by www.4math.cn
All_error=[];%所有误差存储
year=1986:2000;%数据是从1986到2000年的
p=[493 372 445;372 445 176;445 176 235;176 235 378;235 378 429;...
   378 429 561;429 561 651;561 651 467;651 467 527;467 527 668;...
   527 668 841; 668 841 526;841 526 480;526 480 567;480 567 685]';%输入数据,共15组,每组3个输入
t=;%输出数据,共15组,每组1个输出
= mapminmax(p);
= mapminmax(t);
testPercent = 0.20;  % Adjust as desired
validatePercent = 0.20;  % Adust as desired
= dividevec(normInput,normTarget,validatePercent,testPercent);
for j=1:200
NodeNum1 = 20; % 隐层第一层节点数
NodeNum2=40;   % 隐层第二层节点数
TypeNum = 1;   % 输出维数
TF1 = 'tansig';TF2 = 'tansig'; TF3 = 'tansig';
net=newff(minmax(normInput),,{TF1 TF2 TF3},'traingdx');%网络创建net.trainParam.epochs=10000;%训练次数设置
net.trainParam.goal=1e-6;%训练目标设置
PL.lr=0.01;net.trainfcn='traingdm';
= train(net,trainSamples.P,trainSamples.T,[],[],validateSamples,testSamples);
= sim(net,trainSamples.P,[],[],trainSamples.T);%正常输入的9组p数据,BP得到的结果t
= sim(net,validateSamples.P,[],[],validateSamples.T);%用作变量3的数据p,BP得到的结果t
= sim(net,testSamples.P,[],[],testSamples.T);%用作测试的3组数据p,BP得到的结果t
trainOutput = mapminmax('reverse',normTrainOutput,ts);%正常输入的9组p数据,BP得到的归一化后的结果t
trainInsect = mapminmax('reverse',trainSamples.T,ts);%正常输入的9组数据t
validateOutput = mapminmax('reverse',normValidateOutput,ts);%用作变量3的数据p,BP得到的归一化的结果t
validateInsect = mapminmax('reverse',validateSamples.T,ts);%用作变量3的数据t
testOutput = mapminmax('reverse',normTestOutput,ts);%用作变量3组数据p,BP得到的归一化的结果t
testInsect = mapminmax('reverse',testSamples.T,ts);%用作变量3组数据t
%绝对误差计算
absTrainError = trainOutput-trainInsect;
absTestError = testOutput-testInsect;
error_sum=sqrt(absTestError(1).^2+absTestError(2).^2+absTestError(3).^2);
All_error=;
eps=90;%其为3组测试数据的标准差,或者每个数据偏差在一定范围内而判别
if ((abs(absTestError(1))<=30 )&(abs(absTestError(2))<=30)&(abs(absTestError(3))<=30)|(error_sum<=eps))
save mynetdata net
     break
end
j
end
问题是:
if ((abs(absTestError(1))<=30 )&(abs(absTestError(2))<=30)&(abs(absTestError(3))<=30)|(error_sum<=eps))
中的30是怎么算出来的啊

刚飒雷丝 发表于 2009-9-10 07:59

好复杂啊!看不懂
页: [1]
查看完整版本: 一matlab程序中一点点的小问题