小波神经网络预测 matlab,案例24:小波神经网络的时间序列预测-短时交通流量预测...

clc

clear

%网络参数配置

P=[0 0 0.62 0 0 0 0;

0.3915 0.4741 0.77 0.5 0.5 1 0.3158;

0.2835 0.5402 0.68 0 0.5 1 0.3158;

0.6210 1.0000 0.63 1 0.5 1 1.0000;

0.4158 0.4183 0.67 0.5 0 1 0.7368;

0.2160 0.4948 0.71 0 0 1 0.2632;

0.9990 0.0383 0.75 0.5 1 1 0.9474;

0.5805 0.4925 0.71 0 0 0 0.3684;

0.0810 0.0692 0.76 0 0 0 0.0526;

0.3915 0.1230 0.98 0.5 0 0 0.8974]';

T=[0 0.5313 0.5938 0.9375 0.4375 0.5000 1.0000 0.3750 0.3125 0.6563];

P_test=[0.0270 0.0742 0.62 0 0 0 0.2105;

0.1755 0.3667 0.77 0 0.5 1 0.7368;

0.4320 0.3790 0.68 0.5 0 1 0.2632;

0.4995 0.4347 0.63 0 0 1 0.6842;

0.6885 0.5842 0.67 0.5 0.5 1 0.4211;

0.5400 0.8038 0.71 0.5 0.5 1 0.5789;

0.1620 0.2565 0.75 0 0 1 0.4737]';

T_test=[0.1875 0.4062 0.4375 0.5938 0.6250 0.7187 0.3750];

M=7; %输入节点个数

N=1; %输出节点个数

n=7; %隐形节点个数

lr1=0.01; %学习概率

lr2=0.001; %学习概率

%权值初始化

Wjk=randn(n,M);

Wij=randn(N,n);

a=randn(1,n);

b=randn(1,n);

%节点初始化

y=zeros(1,N);

net=zeros(1,n);

net_ab=zeros(1,n);

%权值学习增量初始化

d_Wjk=zeros(n,M);

d_Wij=zeros(N,n);

d_a=zeros(1,n);

d_b=zeros(1,n);

%网络训练

for iii=1:100

error(iii)=0;

%循环训练

for kk=1:10

x=P(:,kk);

d=T(:,kk);

y=0;

for j=1:1:n

for k=1:1:M

net(j)=net(j)+Wjk(j,k)*x(k);

net_ab(j)=(net(j)-b(j))/a(j);

end

for i=1:N

y1= exp(-(net_ab(j).^2)/2) * cos(1.75*net_ab(j));

y=y+Wij(i,j)*y1;   %小波函数

end

end

for i=1:N

error(iii)=error(iii)+abs(d(i)-y(i));

end

%权值调整

for j=1:n

%计算d_Wij

for i=1:N

d_Wij(i,j)=d_Wij(i,j)-(d(i)-y(i))*y1;

end

%计算d_Wjk

for k=1:1:M

for i=1:N

d_Wjk(j,k)=d_Wjk(j,k)+ (d(i)-y(i)) * Wij(i,j) ;

end

y2= -1.75*sin(1.75*net_ab(j)).*exp(-(net_ab(j).^2)/2)-net_ab(j)* cos(1.75*net_ab(j)).*exp(-(net_ab(j).^2)/2) ;

d_Wjk(j,k)=-d_Wjk(j,k)*y2*x(k)/a(j);

end

%计算d_b

for i=1:N

d_b(j)=d_b(j)+(d(i)-y(i))*Wij(i,j);

end

d_b(j)=d_b(j)*y2/a(j);

%计算d_a

for i=1:N

d_a(j)=d_a(j)+(d(i)-y(i))*Wij(i,j);

end

d_a(j)=d_a(j)*y2*((net(j)-b(j))/b(j))/a(j);

end

% 权值参数更新

Wij=Wij-lr1*d_Wij;

Wjk=Wjk-lr1*d_Wjk;

b=b-lr2*d_b;

a=a-lr2*d_a;

d_Wjk=zeros(n,M);

d_Wij=zeros(N,n);

d_a=zeros(1,n);

d_b=zeros(1,n);

y=zeros(1,N);

net=zeros(1,n);

net_ab=zeros(1,n);

end

end

% %网络预测

%值预测

kkk = 1;

for kk=1:7

P_test=P(kk,

e9267f93eea25c8b6b2dd315e7a7a238.gif;

for j=1:1:n

for k=1:1:M

net(j)=net(j)+Wjk(j,k)*P_test(k);

net_ab(j)=(net(j)-b(j))/a(j);

end

for i=1:N

y(i)=y(i)+Wij(i,j)*y1 ;

end

end

yuce=y(i);

%修正各个权值

y=zeros(1,N);%输出节点初始化

net=zeros(1,n);%隐形节点初始化

net_ab=zeros(1,n);%隐形节点初始化

kkk=kkk+1;

end

%结果分析

figure(1)

plot(yuce,'r:')

hold on

plot(T_test,'b--')

title('预测地震震级和实际地震震级比较')

legend('预测地震震级','实际地震震级')

ylabel('地震震级')

figure(2)

plot(T_test-yuce,'--')

title('预测误差')

ylabel('地震震级')

谁能帮我看看这个程序问题在哪里啊???急

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值