📄 netc.m
字号:
%根据测得神经元个数进行网络训练和预测
%环境初始化
clear
clc
close all
%indata是训练数据(前R-1行)和测试数据(最后1行)的输入变量和目标输出,按行排列,每行前Q-1个位输入,第Q个为目标输入(预测数据目标输出可以设为0)
indata=[0.4 450 -5 40 12 80 49 0.86 -6 0.02 180 3.5 1;
0.3 138 5 40 3 120 41 0.87 -3 0.03 240 5.6 1;
0.18 1200 -20 30 6 75 43 0.88 -5 0.01 170 3.5 1;
0.5 200 -20 30 12 90 45 0.89 -12 0.02 165 2.7 1;
0.45 400 -20 30 12 60 41 0.87 -4 0.03 170 3.6 1;
0.44 450 -20 30 12 45 41 0.85 -13 0.02 220 3.6 1;
0.4 200 -10 30 6 60 46 0.85 -10 0.01 145 3 1;
0.463 260 -15 25 12 75 40 0.86 -13 0.005 155 4.4 1;
0.44 560 -10 25 12 85 46 0.89 -1 0.03 195 5.5 1;
0.3 300 -5 25 12 75 41 0.87 -14 0.02 180 4.7 1;
0.5 370 -30 30 12 80 45 0.88 -17 0.01 165 3.9 1;
0.3 225 -15 25 12 90 41 0.86 -5 0.01 170 3.8 1;
0.32 365 5 40 24 80 49 0.89 -2 0.03 210 5.5 1;
0.35 200 5 40 12 75 45 0.85 -5 0.04 170 3.5 1;
0.412 350 -25 35 12 75 40 0.91 -5 0.07 270 5.5 0;
0.51 90 0 35 12 80 45 0.87 -13 0.02 165 2.2 0;
0.105 110 0 35 12 95 44 0.88 -4 0.01 185 5.7 0;
0.41 250 -20 30 12 245 44 0.84 -6 0.01 155 4.8 0;
0.156 110 -25 30 12 150 35 0.85 -2 0.02 160 2.9 0;
0.148 70 -25 25 12 140 37 0.84 -11 0.03 190 3.5 0;
0.238 130 -20 25 12 120 33 0.83 -15 0.01 185 6.7 0;
0.268 120 -20 30 12 110 41 0.87 -7 0.02 190 5.4 0;
0.434 140 -20 25 12 65 36 0.88 -8 0.01 170 8.3 0;
0.2322 200 -15 35 12 70 44 0.85 -15 0.02 190 7.1 0;
0.299 130 -20 30 12 70 39 0.85 -10 0.01 185 4.4 0;
0.175 210 5 40 12 55 40 0.86 3 0.01 240 4 0;
0.45 100 -5 30 12 75 35 0.84 -6 0.04 215 2.7 0;
0.425 90 -30 30 12 80 37 0.88 4 0.02 200 3.5 0;
0.517 80 -30 30 12 180 42 0.87 -1 0.01 155 5.1 0;
0.592 110 -30 30 12 110 40 0.85 2 0.02 160 4.4 0;
0.18 140 -20 35 12 40 46 0.88 -21 0.01 185 4.8 0;
0.4 115 -20 30 12 55 46 0.88 -8 0.02 185 4.6 0;
0.1953 260 -5 40 12 60 47 0.89 -18 0.01 190 2.6 0;
0.3 150 0 40 12 95 42 0.85 -15 0.02 185 2.7 0;
0.35 110 -5 30 12 90 39 0.84 -2 0.01 160 4.1 0;
0.47 95 -20 30 12 65 38 0.86 5 0.03 200 5.7 0;];
indata=predepose(indata);
%R是indata行数,Q是indata列数
[R,Q]=size(indata);
%提取输入变量,并转置
p=indata(:,1:Q-1)';
%提取目标输入
t=indata(:,Q)';
%数据预处理,进行归一化,已使用predepose函数代替
% for i=1:Q-1
% P(i,:)=(p(i,:)-min(p(i,:)))/(max(p(i,:))-min(p(i,:)));
% end
P=p;
nu=randperm(36);
P_test=P(:,nu(34:36));
T_test=t(:,nu(34:36));
P=P(:,nu(1:33));
T=t(:,nu(1:33));
% %提取测试数据
% P_test=P(:,R);
% T_test=t(:,R);
% %提取训练数据
% P=P(:,1:R-1);
% T=t(:,1:R-1);
%设置网络中间层神经元个数
i=12;
%创建一个BP网,隐含层有i个神经元,传递函数为logsig,输出层有1个神经元,传递函数为purelin,训练函数为trainlm
net = newff(minmax(P),[i,1],{'logsig' 'purelin'},'trainlm');
%设置训练步数
net.trainParam.epochs =2000;
%目标误差
net.trainParam.goal=1e-5;
%确认失败的最大次数
net.trainParam.max_fail=20;
%最小性能梯度
net.trainParam.min_grad=1e-20;
%初始化网络
net=init(net);
%进行训练
net=train(net,P,T);
%进行预测并输出
Temp=sim(net,P_test)
T_test
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -