📄 bp2.m
字号:
clear
% 输入历史实测数据(34天)的汽轮机振动的日平均峰峰值
day=[40.6,37.2,36.2,36.8,36.4,36.8,35.6,37.2,35.2,35.8,36,35.9,39,40,40.4,39.2,36.6,35.8,34.8,35.8,37,38.2,41.2,40.2,37.6,37.8,39.8,40.8,38.8,38.6,42,47.2,46.6,44.2];
dayhistory=day(1:30);%取其中三十天作为历史数据样本
dayhismod=reshape(dayhistory,5,6);% 将历史数据分为6个样本,每个大小为5,其中reshape是以列排序的
dayday=day(1:25);% 取其中的前25天
daypost=day(6:30);%取其中的随后25天
p=reshape(dayday,5,5);% 将前25天数据分为5行5列矩阵作为网络的训练输入样本
t=reshape(daypost,5,5); %将随后的25天分为5行5列矩阵作为网络的目标输出向量
daylast=day(26:30);
h3=reshape(daylast,5,1);% 将倒数第二个样本作为网络测试时的输入样本
r=6:30;
rr=reshape(r,5,5);
%%%%%%%%%%%%%% 新建网络bp %%%%%%%%%%%%%%%%
net=newff(minmax(p),[5,5],{'purelin' 'purelin'},'trainlm');
y1=sim(net,p);
% 新建网络,其中minmax(p)为p的没一次输入的最大最小值向量
% 两层的传递函数均为purelin
% 训练函数为trainlm
% 所训练的网络大小为[5,5]
% 仿真训练前的网络
%%%%%%%%%%% 进行网络训练 %%%%%%%%%%%%%%
% network parameters:
% epochs--epochs of the train
% goal--errors goal of the network
% lr--learning rate
% shows--epochs between the displays
% time--Maximum time to train in seconds
net.trainParam.epochs=200; % 训练次数
nettrainParam.goal=0.0001; % 误差期望值
% returns of the train:
% net--New network
% tr--Training record (epoch and perf).
% Y--Network outputs.
% E--Network errors.
[net,tr,Y,E]=train(net,p,t);
%%%%%%%%%%% 网络测试 %%%%%%%%%%%%%%%%
% input the testing points here %
y21=sim(net,p);
y2=reshape(y21,1,25);
clf
plot(r,y2,'b-^')
hold on
plot(1:34,day,'r-*')
%%%%%%%%%%%%% 预测 %%%%%%%%%%%%%%%
y3=sim(net,h3);
plot(31:35,y3,'-*')
hold on
title('神经网络训练结果');
xlabel('时间(天)');
ylabel('仿真输出结果');
legend('仿真模拟值','实际值','神经网络预测值');
%%%%%%%%%%%%%%%%%% 绘制误差曲面 %%%%%%%%%%%%%
x=1:5;
y=1:5;
plot3(x,y,E(x,y))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -