求大神帮忙,用BP或elman神经网络实现风速预测程序怎么写?

求大神帮忙,用BP或elman神经网络实现风速预测程序怎么写?,第1张

x=[6.2 ,5.8 ,5.5 , 5.6 ,5.4 ,5.1 ,5.2 , 5.2  ,5.1 ,4.9 ,4.8 ,5 ,5.2 ,5.3 ...

    ,5.2 ,5.1 ,5.1 ,5 ,4.8 , 4.9 ,5.3 ,5.4 ,5.3 ,5.3 ,5.5 ,5.2 ,4.6 ,4.9 ...

    ,4.9 ,5.4 ,5.4 ,5.5 ,5.4 ,5.1 ,5 ,5.1 ,5.2 ,4.9 ,5.2 ,5.1 ,5.1 ,4.8 ,...

    3.8 ,3.4 ,3.8 ,3.9 ,3.8 ,3.7 ,3.6 ,2.9 ,3.1 ,3.7 ,3.9 ,3.7 ,3.7 ,3.8 ,...

    3.6 ,3.7 ,2.7 ,2.8 ,1.9 ,2.7 ,2.9 ,2.8 ,3.5 ,3.6 ,3.7 ,3.3 ,3.6 ,3.5 ,...

    4.3 ,4.4 ,3.9 ,4.5 ,4.2 ,4.9 ,4.5 ,4.6 4.8, 5.7, 5.6, 5.6, 5.6, 5.6, ...

    5.6,5.6, 5.6, 5.6, 5.6, 5.6,5.6 ,5.6,5.6 ,5.6 ,5.6 ,5.6 ,5.6 ,5.6 ,5.6 ...

    ,5.6 ,5.6 ,5.6 ,5.6 ,5.5 ,5.5 ,5.2 ,3.6 ,5.6 ,4.5 ,6.1,6.2 ,5.6 ,6.4 ,...

    5.5 ,4.8 ,5.1 ,6.1 ,5.5 ,4.6 ,4.3 ,6.7 ,5.9 ,4.8 ,5.8 ,5.7 ,5.7 ,5.4 ,...

    5.9 ,5.7 ,6.2 ,5.2 ,4.6 ,4.1 ,4.3 ,4.3 ,4.1 ,3.9 ,3.8 ,4.3 ,4.6,4.2,...

    4.1 ,4.5 ,4.3 ,3.7 ,3.1 ,2.7 ,2.9 ,2.4 ,3 ,2.8 ,2.8]

% 该脚本用来做NAR神经网络预测

% 作者:Macer程

lag=3    % 自回归阶数

iinput=x% x为原始序列(行向量

n=length(iinput)

%准备输入和输出数据

inputs=zeros(lag,n-lag)

for i=1:n-lag

    inputs(:,i)=iinput(i:i+lag-1)'

end

targets=x(lag+1:end)

%创建网络

hiddenLayerSize = 10%隐藏层神经元个数

net = fitnet(hiddenLayerSize)

% 避免过拟合,划分训练,测试和验证数据的比例

net.divideParam.trainRatio = 70/100

net.divideParam.valRatio = 15/100

net.divideParam.testRatio = 15/100

%训练网络

[net,tr] = train(net,inputs,targets)

%% 根据图表判断拟合好坏

yn=net(inputs)

errors=targets-yn

figure, ploterrcorr(errors)                      %绘制误差的自相关情况(20lags)

figure, parcorr(errors)                          %绘制偏相关情况

%[h,pValue,stat,cValue]= lbqtest(errors)         %Ljung-Box Q检验(20lags)

figure,plotresponse(con2seq(targets),con2seq(yn)) %看预测的趋势与原趋势

%figure, ploterrhist(errors)                      %误差直方图

%figure, plotperform(tr)                          %误差下降线

%% 下面预测往后预测几个时间段

fn=5  %比如预测步数为fn。

f_in=iinput(n-lag+1:end)'

f_out=zeros(1,fn)  %预测输出

% 多步预测时,用下面的循环将网络输出重新输入

for i=1:fn

    f_out(i)=net(f_in)

    f_in=[f_in(2:end)f_out(i)]

end

% 画出预测图

figure,plot(1:n,iinput,'b',n:n+fn,[iinput(end),f_out],'r')

效果不是很好,但未来5个点风速应该是增大的。

神经网络可以指向两种,一个是生物神经网络,一个是人工神经网络。

生物神经网络:一般指生物的大脑神经元,细胞,触点等组成的网络,用于产生生物的意识,帮助生物进行思考和行动。

人工神经网络(Artificial Neural Networks,简写为ANNs)也简称为神经网络(NNs)或称作连接模型(Connection Model),它是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。

人工神经网络:是一种应用类似于大脑神经突触联接的结构进行信息处理的数学模型。在工程与学术界也常直接简称为“神经网络”或类神经网络。

1:20

p1=sin(t)

p2=sin(t)*2

plot(t,p1,'r')

hold

on

plot(t,p2,'b--')

hold

on

t1=ones(1,20)t2=ones(1,20)*2%产生两组向量,分别为这两波形幅值,作为输出向量

p=[p1

p2

p1

p2]

t=[t1

t2

t1

t2]

Pseq=con2seq(p)%将矩阵形式的训练样本转换为序列的形式

Tseq=con2seq(t)

R=1%输入元素的数目为1

S2=1%输出曾的神经元个数为1

S1=10%中间层有10个神经元

net=newelm([-2,2],[S1,S2],{'tansig','purelin'})

net.trainParam.epochs=100%设定次数

net=train(net,Pseq,Tseq)

y=sim(net,Pseq)

%预测

P=randn(12,2)T=randn(12,2)

threshold=[0

10

10

10

10

10

10

10

10

10

10

10

1]

a=[11

17

23]

for

i=1:3

net=newelm(thresho...


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/11456760.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存