zl程序教程

您现在的位置是:首页 >  后端

当前栏目

BP神经网络的MATLAB源码

2023-09-11 14:15:33 时间

%BP神经网络预测气象数据(气温、降水和气压)
%作者:谭帅帅 西安电子科技大学
%测试平台 MATLAB7.0
clear all;

DataSet = xlsread('bp_ds.xls','sheet1','c1:E361');%读取预处理过的信息age,province,score
DataSet(:,1)=DataSet(:,1)./10;DataSet(:,2)=DataSet(:,2)./20;DataSet(:,3)=DataSet(:,3)./10000;
nDataSet = xlsread('bp_nds.xls','sheet1','C2:E13');%目标训练样本
nDataSet(:,1)=nDataSet(:,1)./10;nDataSet(:,2)=nDataSet(:,2)./20;nDataSet(:,3)=nDataSet(:,3)./10000;
TestSet =  xlsread('bp_td.xls','sheet1','C2:E324');%测试样本
TestSet(:,1)=TestSet(:,1)./10;TestSet(:,2)=TestSet(:,2)./20;TestSet(:,3)=TestSet(:,3)./10000;
nTestSet = xlsread('bp_ntd.xls','sheet1','C2:E13')%目标测试样本
nTestSet(:,1)=nTestSet(:,1)./10;nTestSet(:,2)=nTestSet(:,2)./20;nTestSet(:,3)=nTestSet(:,3)./10000;
net = newff(minmax(DataSet),[90,12],{'tansig','purelin'},'traincgf');
net.trainParam.epochs = 10000;%训练次数
net.trainParam.goal = 0.005;%误差
net.trainParam.show = 500;% 训练显示间隔
net = train(net,DataSet,nDataSet);%训练数据

Tar = sim(net,DataSet);%Tar为神经网络预测的结果

x = [1:1:12];
temp = Tar';%转置
temp1 = temp(1,:).*10;%温度
temp2 = temp(2,:).*20;%降水
temp3 = temp(3,:).*10000;%气压

ntemp = nTestSet';
ntemp1 = ntemp(1,:).*10;
ntemp2 = ntemp(2,:).*20;
ntemp3 = ntemp(3,:).*10000;

%subplot(2,2,1);
figure(1);
plot(x,temp1,x,ntemp1);
title('2009温度预测比较');
xlabel('温度');ylabel('月份');
legend('预测曲线','实际曲线');
grid on;


%subplot(2,2,2);
figure(2);
plot(x,temp2,x,ntemp2);
title('2009降水预测比较');
xlabel('降水');ylabel('月份');
legend('预测曲线','实际曲线');
grid on;


%subplot(2,2,3);
figure(3);
plot(x,temp3,x,ntemp3);
title('2009气压预测比较');
xlabel('气压/pa');ylabel('月份');
legend('预测曲线','实际曲线');
grid on;