clc
clear
close all
[a ,ax,ay]= xlsread('a.xlsx');
num =a(:,2:5);
rand('state',0)
n = randperm(length(num));
m = 150;
input_train=num(n(1:m),1:3)';%训练数据的输入数据
output_train=num(n(1:m),4)';%训练数据的输出数据
input_test=num((m+1:end),1:3)';%测试数据的输入数据
output_test=num((m+1:end),4)'; %测试数据的输出数据
%选连样本输入输出数据归一化
[inputn,inputps]=mapminmax(input_train,0,1);%训练数据的输入数据的归一化
[outputn,outputps]=mapminmax(output_train,0,1);%训练数据的输出数据的归一化de
%% BP网络训练
% %初始化网络结构
%trainc traincgb traincgf traincgp traingda traingdx trainlm
%trainoss trainr trainrp trains trainscg
net=newff(minmax(inputn),[15,1],{'logsig','tansig'},'trainlm');
%net.trainParam.showWindow = false;%关闭训练窗口
%net.trainParam.max_fail = 9;
net.trainParam.epochs=1000;%最大迭代次数
net.trainParam.lr=0.1;%学习率
net.trainParam.goal=0.001;%学习目标
%网络训练
net=train(net,inputn,outputn);
%% BP网络预测
%预测数据归一化
inputn_test=mapminmax('apply',input_test,inputps);
outputn_test=mapminmax('apply',output_test,outputps);
%网络预测输出
an=sim(net,inputn_test);
an1=sim(net,inputn);
an(an<0) = 0;
an1(an1<0)=0;
[MSE ,RMSE, MBE ,MAE ,MAPE] =MSE_RMSE_MBE_MAE(outputn_test,an)
R2 = R_2(outputn_test,an)
%网络输出反归一化
BPoutput=(mapminmax('reverse',an,outputps));
BPoutput1=(mapminmax('reverse',an1,outputps));
%% 结果分析
figure
plot(BPoutput,'r-o')%预测的结果数据画图-代表虚线,O代表圆圈标识,r代表红色
hold on
plot(output_test,'k--*');%期望数据,即真实的数据画图,-代表实现,*就是代表*的标识,k代表黑色
legend('BP神经网络仿真值','真实值','Location','northeast')%标签
title('BP神经网络','fontsize',12)%标题 字体大小为12
xlabel('样本','fontsize',12)%X轴
set(gca,'fontsize',12)
ylabel('光伏发电功率')
figure
plot(BPoutput1,'r-o')%预测的结果数据画图-代表虚线,O代表圆圈标识,r代表红色
hold on
plot(output_train,'k--*');%期望数据,即真实的数据画图,-代表实现,*就是代表*的标识,k代表黑色
legend('BP神经网络训练拟合值','真实值','Location','southeast')%标签
title('BP神经网络','fontsize',12)%标题 字体大小为12
xlabel('样本','fontsize',12)%X轴
ylabel('光伏发电功率')
set(gca,'fontsize',12)
%预测误差
error=BPoutput-output_test;
figure
plot(error,'-*')
title('BP网络预测误差','fontsize',12)
ylabel('误差','fontsize',12)
xlabel('样本','fontsize',12)
set(gca,'fontsize',12)
figure
plot(BPoutput1,output_train,'ko')
hold on
a = polyfit(BPoutput1,output_train,1);
y = polyval(a,[min([BPoutput1 output_train]) max([BPoutput1 output_train])]);
plot([min([BPoutput1 output_train]) max([BPoutput1 output_train ])],y,'k-','LineWidth',1.5)
hold on
plot([min([BPoutput1 output_train]) max([BPoutput1 output_train]) ],[min([BPoutput1 output_train]) max([BPoutput1 output_train])],'b-','LineWidth',1.5)
hold on
xlim([min([BPoutput1 output_train]) max([BPoutput1 output_train ])])
ylim([min([BPoutput1 output_train]) max([BPoutput1 output_train ])])
xlabel('预测值')
ylabel('实际值')
legend('训练数据集','线性拟合','Y=X')
error1 = BPoutput1 - output_train;
没有合适的资源?快使用搜索试试~ 我知道了~
【光伏预测】基于BP神经网络实现光伏发电功率预测附Matlab代码.zip
共8个文件
jpg:4个
m:3个
xlsx:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
1 下载量 122 浏览量
2024-05-21
21:35:41
上传
评论
收藏 142KB ZIP 举报
温馨提示
1.版本:matlab2014/2019a/2021a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
资源推荐
资源详情
资源评论
收起资源包目录
【光伏预测】基于BP神经网络实现光伏发电功率预测附Matlab代码.zip (8个子文件)
【光伏预测】基于BP神经网络实现光伏发电功率预测附Matlab代码
运行结果1.jpg 32KB
MSE_RMSE_MBE_MAE.m 424B
R_2.m 312B
mainbp1.m 3KB
运行结果2.jpg 59KB
运行结果4.jpg 31KB
运行结果3.jpg 24KB
a.xlsx 17KB
共 8 条
- 1
资源评论
matlab科研助手
- 粉丝: 2w+
- 资源: 2122
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功