function f=bpfun()
%Neural Network—bpfun.m
%输入矩阵的范围(数据源)
P=[20 3000;1400 3500;500 3500;];
%创建网络
net=newff(P,[6 1],{'tansig' 'purelin'});
%初始化神经网络
net=init(net);
%两次显示之间的训练步数 默认为25
net.trainParam.show=50;
%lr不能选择太大 太大了会造成算法不收敛 太小了会使训练时间太长
%一般选择0.1~0.01之间
%训练速度
net.trainParam.lr=0.05;
%训练次数 默认为100
net.trainParam.epochs=2000;
%训练时间 默认为inf,表示训练时间不限
net.trainParam.time=5000;
%训练的目标 默认为0
net.trainParam.goal=0.001;
%建立源数据的矩阵
SourceDataConvert=importdata('bp_train_sample_data.dat');
SourceData=SourceDataConvert'
TargetConvert=importdata('bp_train_target_data.dat');
Target=TargetConvert'
%神经网络训练
net=train(net,SourceData,Target)
%显示训练后的各层权重
mat1=cell2mat(net.IW(1,1))
mat2=cell2mat(net.LW(2,1))
%mat3=cell2mat(net.LW(3,2))
%读取仿真文件数据
simulate_data_convert=importdata('bp_simulate_data.dat');
simulate_data=simulate_data_convert';
result=sim(net,simulate_data)
result=result'
grid;
title('bp神经网络:训练次数-输出误差对应关系图');
xlabel('训练次数');
ylabel('误差值');
%打开存储仿真结果的文件 a 追加结果 w+ 清除原有内容后读或写
fid=fopen('result.dat','w+');
if fid==-1
disp('file open error')
fclosed(fid);
return;
else
;
end
%仿真的样本数
simulate_num=30;
%存储结果到文件中
for i=1:1:simulate_num
fprintf(fid,'%f',result(i));
fprintf(fid,'%s',' ');
end
%换行输入
fprintf(fid,'%s\r\n','');
%fprintf(fid,'%f',20);
%关闭文件
fclose(fid);
%可以把结果文件的数据读出进行操作
matrix=importdata('result.dat');