❶ matlab bp神经网络
输入量必须有才能预测,只是输入量要比原来的往后延长一点,如原来的t=1:5,可改为t1=3:7,这样,再仿真,就向后预测了2个点。3入1出的类似,要有3个输入。
❷ 2输入2输出,bp神经网络MATLAB代码,怎么编写
k=0:1:6000;
w=0.03*k*pi/180;
x=0.4+0.2*cos(w);
z=0.2+0.2*sin(w);
y1=-atan(x/z)+acos(sqrt(1-(x.^2+z.^2-0.07).^2/(0.36*x.^2+0.36*z.^2)));
y2=asin((0.25-x.^2-z.^2)/0.24)-pi;
[input,minI,maxI,output,minO,maxO]=premnmx([x,z]',[y1,y2]');%进行归一化处理
net=newff(minmax(input),[2,10,2],{'tansig','tansig','purelin'},'traingd');
net.trainParam.show=100;
net.trainParam.Lr=0.05;
net.trainParam.epochs=6000;
net.trainParam.goal=1e-4;
net=train(net,input,output);
output=sim(net,input);
postmnmx(output,minO,maxO);
plot(k,y1,k,y2);
%说明:x和z为输入,y1和y2为输出,对输入进行了归一化处理,并将两个输出构成一个矩阵output,相当于输入变成了input,输出变成了output,
❸ 求预测一组数据的bp神经网络模型的matlab代码
用matlab求预测一组数据的bp神经网络模型,可以分
1、给定已经数据,作为一个原始序列;
2、设定自回归阶数,一般2~3,太高不一定好;
3、设定预测某一时间段
4、设定预测步数
5、用BP自定义函数进行预测
6、根据预测值,用plot函数绘制预测数据走势图
其主要实现代码如下:
clc
% x为原始序列(行向量)
x=[208.72 205.69 231.5 242.78 235.64 218.41];
%x=[101.4 101.4 101.9 102.4 101.9 102.9];
%x=[140 137 112 125 213 437.43];
t=1:length(x);
% 自回归阶数
lag=3;
%预测某一时间段
t1=t(end)+1:t(end)+5;
%预测步数为fn
fn=length(t1);
[f_out,iinput]=BP(x,lag,fn);
P=vpa(f_out,5);
A=[t1' P'];
disp('预测值')
disp(A)
% 画出预测图
figure(1),plot(t,iinput,'bo-'),hold on
plot(t(end):t1(end),[iinput(end),f_out],'rp-'),grid on
title('BP神经网络预测某地铁线路客流量')
xlabel('月号'),ylabel('客流量(百万)');
运行结果:
❹ 用BP神经网络建立数学模型,MATLAB实现,怎样得到输入到输出的计算公式
clear;
%输入数据矩阵
p1=zeros(1,1000);
p2=zeros(1,1000);
for i=1:1000
p1(i)=rand;
p2(i)=rand;
end
p=[p1;p2];
%目标(输出)数据矩阵
t = cos(pi*p1)+sin(pi*p2);
%对训练集中的输入数据矩阵和目标数据矩阵进行归一化处理
[pn, inputStr] = mapminmax(p);
[tn, outputStr] = mapminmax(t);
%建立BP神经网络
net = newff(pn, tn, [200,10]);
%每10轮回显示一次结果
net.trainParam.show = 10;
%最大训练次数
net.trainParam.epochs = 5000;
%网络的学习速率
net.trainParam.lr = 0.05;
%训练网络所要达到的目标误差
net.trainParam.goal = 10^(-8);
%网络误差如果连续6次迭代都没变化,则matlab会默认终止训练。为了让程序继续运行,用以下命令取消这条设置
net.divideFcn = '';
%开始训练网络
net = train(net, pn, tn);
%获取网络权值、阈值
netiw = net.iw;
netlw = net.lw;
netb = net.b;
w1 = net.iw{1,1}; %输入层到隐层1的权值
b1 = net.b{1} ; %输入层到隐层1的阈值
w2 = net.lw{2,1}; %隐层1到隐层2的权值
b2 = net.b{2} ; %隐层1到隐层2的阈值
w3 = net.lw{3,2}; %隐层2到输出层的权值
b3 = net.b{3} ;
in = mapminmax('apply',[0.1;0.5],inputStr);
%用公式计算输出
y=w3*tansig(w2*tansig(w1*in+b1)+b2)+b3;
y1=mapminmax('reverse',y,outputStr);
%用网络验证计算结果
out = sim(net,in);
out1=mapminmax('reverse',out,outputStr);
❺ 求matlab高手写bp神经网络写一个6输入3输出的模型
比如输入以下这些,属于2输入1输出的:
p=[1,2;3,4;5,6;7,8];
%输入 一共四组,每组两个
t=[3,7,11,15];
%教师输出 只输出1个值,对应输入的4个
net=newff(p',t,{10,10},{'tansig','tansig'},'trainlm');
%创建名为net的bp网络
%newff(输入,输出,{隐层节点,隐层节点。。。有几层设几个},{‘传输 函数’,‘传输函数’。。。有几层设几个},训练函数)
net.trainParam.goal = 0.00001; %设置精确度
net.trainParam.epochs = 5000; %设置步长
[net,tr] = train(net,p',t); %训练开始
。。。。。。
%训练完以后,可以进行模拟,比如
p=[10,20];
a=sim(net,p')
如果是分类的话,比如分两类
再打
a=a>10;
就能分成两类
❻ 求一个bp神经网络预测模型的MATLAB程序
BP神经网络预测的步骤:
1、输入和输出数据。
2、创建网络。fitnet()
3、划分训练,测试和验证数据的比例。net.divideParam.trainRatio;net.divideParam.valRatio;net.divideParam.testRatio
4、训练网络。train()
5、根据图表判断拟合好坏。ploterrcorr();parcorr();plotresponse()
6、预测往后数据。net()
7、画出预测图。plot()
执行下列命令
BP_prediction
得到结果:
[ 2016, 14749.003045557066798210144042969]
[ 2017, 15092.847215188667178153991699219]
[ 2018, 15382.150005970150232315063476562]
[ 2019, 15398.85769711434841156005859375]
[ 2020, 15491.935150090605020523071289062]