newelm()函数:
clear ; close all; clc
%原始数据
data=[0.4413,0.4707,0.6953,0.8133;...0.4379,0.4677,0.6981,0.8002;...0.4517,0.4725,0.7006,0.8201;...0.4557,0.4790,0.7019,0.8211;...0.4601,0.4811,0.7101,0.8298;...0.4612,0.4845,0.7188,0.8312;...0.4615,0.4891,0.7201,0.8330];
net=[];
for i=1:4P=[data(1:3,i),data(2:4,i),data(3:5,i)];%拟合输入函数矩阵,3个样本 每个样本12个变量T=[data(4,i),data(5,i),data(6,i)];%拟合目标函数矩阵th1=[0,1;0,1;0,1];th2=[0,1];net{i}=newelm(th1,th2,[20,1],{'tansig','purelin'});%创建Elman网络net{i}.trainParam.epochs=1000;%设置迭代次数net{i}=init(net{i});%初始化net{i}=train(net{i},P,T);%训练%测试test.P{i}=data(4:6,i);y(i)=sim(net{i},test.P{i});%仿真
end
fprintf('真实值:\n');
disp(data(7,:));
fprintf('预测值:\n');
disp(y);
fprintf('误差:\n');
disp((y-data(7,:))./y);
elmannet()函数------------------------效果好一点
% 初始化
clear ; close all; clc
%原始数据
data=[0.4413,0.4707,0.6953,0.8133;...0.4379,0.4677,0.6981,0.8002;...0.4517,0.4725,0.7006,0.8201;...0.4557,0.4790,0.7019,0.8211;...0.4601,0.4811,0.7101,0.8298;...0.4612,0.4845,0.7188,0.8312;...0.4615,0.4891,0.7201,0.8330];
net=[];
for i=1:4P=[data(1:3,i),data(2:4,i),data(3:5,i)];%拟合输入函数矩阵,3个样本 每个样本12个变量T=[data(4,i),data(5,i),data(6,i)];%拟合目标函数矩阵th1=[0,1;0,1;0,1];th2=[0,1];
% net{i}=newelm(th1,th2,[20,1]);%创建Elman网络net{i}=elmannet(1:3,20);net{i}=init(net{i});%初始化net{i}=train(net{i},P,T);%训练%测试test.P{i}=data(4:6,i);y(i)=sim(net{i},test.P{i});%仿真
end
fprintf('真实值:\n');
disp(data(7,:));
fprintf('预测值:\n');
disp(y);
fprintf('误差:\n');
disp((y-data(7,:))./y);
fprintf('平均误差mse:\n');
disp(mean(abs(y-data(7,:))))