matlab创建一个elman神经网络,matlab神经网络elman模型运行

clc;

clear all

close all

nntwarn off;

% tic;

% a=xlsread('shuru');  %读入原始的输入数据

% b=xlsread('shuchu');  %读入原始的输出数据

shuju=xlsread('data');

output_test=shuju(10,:);

% t_test=t_test';

for i=1:7

a(i,:)=[shuju(i,:),shuju(i+1,:),shuju(i+2,:)];

end

b=shuju(4:10,:);

[row,col]=size(a);

for i=1:col  %输入样本数据的归一化

maxa(1,i)=max(a(:,i));  %存储每一列最大值

mina(1,i)=min(a(:,i));  %存储每一列最小值

if maxa(1,i)~=mina(1,i)

a(:,i)=(a(:,i)-mina(1,i))/(maxa(1,i)-mina(1,i)); %得到归一化后的矩阵

else

if maxa(1,i)~=0

a(:,i)=1;

else

a(:,i)=0;

end

end

end

[row,col]=size(b);

for i=1:col  %输出样本数据的归一化

maxb(1,i)=max(b(:,i));  %存储每一列最大值

minb(1,i)=min(b(:,i));  %存储每一列最小值

if maxb(1,i)~=minb(1,i)

b(:,i)=(b(:,i)-minb(1,i))/(maxb(1,i)-minb(1,i)); %得到归一化后的矩阵

else

if maxb(1,i)~=0

b(:,i)=1;

else

b(:,i)=0;

end

end

end

% 训练数据输入

input_train=a(1:6,:);

% 为适应网络结构 做转置

input_train=input_train';

% 训练数据输出

output_train=b(1:6,:);

% 为适应网络结构 做转置

output_train=output_train';

% 测试数据输入

input_test=a(7,:);

% 为适应网络结构 做转置

input_test=input_test';

% 测试数据输出

%% elman神经网络

yinhan=[6 7 8 9];

for i=1:4

net=newelm(minmax(input_train),[yinhan(i),1],{'tansig','purelin'}); %建立网络模型,其中参数可以根据要求修改

net.trainparam.show=100; %每迭代100次显示1次

net.trainparam.epochs=1000; %最大迭代次数1000

net.trainparam.goal=0.001; %迭代目标

net=init(net); %初始化网络

[net,tr]=train(net,input_train,output_train); %训练网络

PN=sim(net,input_test); %仿真输出结果

y(i,:)=PN*(maxb(1,1)-minb(1,1))+minb(1,1);  %仿真值反归一化

error(i,:)=y(i,:)'-output_test;

end

for i=1:4

e(:,i)=error(i)/output_test;

e(:,i)=abs(e(i));

end

figure(1)%作图

plot(yinhan(1):1:yinhan(4),e,'-ro');

title('相对平均误差曲线');

xlabel('隐含层');

ylabel('相对平均误差');

hold on;

[ermin,col]=min(e);

figure(2)%作图

plot(1,y(col,:),'-r*',1,output_test,'b:o');

title('*为预测价格,o为真实价格');

xlabel('时间点');

ylabel('销售额(万元)');

hold on;

% plot(error(1,:),'-ro','linewidth',2);

% hold on;

% plot(error(2,:),'-b:x','linewidth',2);

% hold on;

% plot(error(3,:),'k-.s','linewidth',2);

% hold on;

% plot(error(4,:),'c- -d','linewidth',2);

% hold on;

% title('Elman预测误差图')

% set(gca,Xtick')

% legend('7','11','14','8','location','best')

% xlabel('时间差')

% ylabel('误差')

% hold off;

为什么每次运行结果和误差都不同,是因为神经网络本身特性决定的吗

5724a1379ceb16a514510c7aa4f77048.gif

2014-5-17 12:18 上传

点击文件名下载附件

13.5 KB, 下载次数: 442

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值