clear %清除所有变量
clc %清除commond命令窗口的内容
IN=1:61 %给IN赋值,[1 2 3 4 5 6 … 59 60 61]
sr=zeros(1,61) % sr是1×61的零矩阵,[0 0 0 0 0 … 0]
OUT=sr % 把矩阵sr赋值给OUT
[X,minx,maxx,T,mint,maxt]=premnmx(IN,OUT) % 对输入和输出函数进行归一化处理,其中:IN为输入数据,OUT为输出数据,X为输入数据转换成的标准数据,minx为输入的最小数据,maxx为输入的最大数据,T为输出数据转换成的标准数据,mint为输出的最小值,maxt为输出的最大值。
q=50 q1=0 q0=70%赋值
while(q1<q) %当q1<q时,
q=q0 %q=q0
[M,N]=size(X) % M为X的行数;N为X的列数
[L,N]=size(T) %L为T的行数;N为T的列数
net=newff(minmax(X),[q,L],{'tansig','purelin'},'trainlm')%建立前馈型网络。其中minmax(X)为输入向量X的最小值和最大值;q为隐含层单元数;L为隐含层层数;tansig 隐含层转移函数;purelin 输出层转移函数;trainlm网络的训练函数
net.trainParam.lr=0.01%网络学习速率
net.trainParam.epochs=2000%学习步骤
net.trainParam.goal=1e-5%学习目标
[net,tr]=train(net,X,T)%对建立好的网凳数络进行训练
Y=sim(net,X)%对输入量X进行仿真,Y为仿真结果
Y=postmnmx(Y,mint,maxt)%对仿真结果进行反归一化
%灰色关联分析,调整网络隐层节点
p=0.3
e=0.3
an=repmat(net.b{1},1,N)%将矩阵net.b{1}复制1×N块,即an由1×N块net.b{1}平铺而成
op=tansig(net.iw{1,1}*X+an)%
op1=op' % op1为op的转置
T0=T' % T0为T的转置
T1=repmat(T0,1,q)%将矩阵T0复制1×q块,即T1由1×q块T0平铺而成
DIF=abs(T1-op1)% T1-op1的绝对值
MIN=min(min(DIF)) %min(DIF),DIF 的最小值
MAX=max(max(DIF)) %max(DIF),DIF 的最大值
Si=(MIN+p*MAX)./(DIF+p*MAX)%计算得到Si
ri=sum(Si)/N% 求Si的平均值;sum(Si)是对Si进行求和
D=find(ri>=e)%找出数组ri中的所有大于e的元素的位置,并且在向量D中返回非零元素的线性索引。
[q0,q1]=size(D) % q0为D的行数,q1为D的列数
q0=q1 %将q1的值赋给q0
end
q0
ri
D
q=q1 %将q的值赋给q1
1、这是三层网桐粗携络 2、隐含层由70 个神经元组成 3、输入神经元个数61 输出神经元个数61
这是我自己的理解,因为不知道干什么用局伏所以不知道具体的是什么意思,只能单句理解没法整体掌握,就先分析到这里吧,不知道对错,希望对你有帮助~
用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('客流量(百万)')
运行结果:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)