全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 MATLAB等数学软件专版
2858 0
2012-12-08
先前的代码如下,求高手指点。。。


clc
clear
close all

%---------------------------------------------------
% 产生训练样本与测试样本
tic,
dd=load('data.txt');
%数据归一化
A=min(dd);
C=max(dd);
for i=1:length(dd)
    aa(i)=(dd(i)-A)/(C-A);
end
dd=aa;
p=1;
for i=1:1:100
   for j=p:10+p-1
        n1(i,j-p+1)=dd(j);
        x1(i,1)=dd(j+1);
    end
    p=p+1;
end   %d是1-2001,行向量
n2=[];x2=[];
q=1;
for i=1:1:40
   for j=q:10+q-1
        n2(i,j-q+1)=dd(j+100);
        x2(i,1)=dd(j+100+1);
    end
    q=q+1;
end

xn_train = n1';          % 训练样本,每一列为一个样本
dn_train = x1';          % 训练目标,行向量

xn_test = n2';           % 测试样本,每一列为一个样本
dn_test = x2';           % 测试目标,行向量

%---------------------------------------------------
% 函数接口赋值

NodeNum = 12;           % 隐层节点数
TypeNum = 1;            % 输出维数
p1 = xn_train;          % 训练输入
t1 = dn_train;          % 训练输出
Epochs = 2000;          % 训练次数

P = xn_test;            % 测试输入
T = dn_test;            % 测试输出(真实值)

%---------------------------------------------------
% 设置网络参数

TF1 = 'logsig';TF2 = 'purelin';


net = newff(minmax(p1),[NodeNum TypeNum],{TF1 TF2},'trainlm');
net.trainParam.epochs = Epochs;     % 最大训练次数
net.trainParam.goal = 1e-8;         % 最小均方误差
net.trainParam.min_grad = 1e-20;    % 最小梯度
net.trainParam.show = 200;          % 训练显示间隔
net.trainParam.time = inf;          % 最大训练时间

%---------------------------------------------------
% 训练与测试

net = train(net,p1,t1);     % 训练
toc
X = sim(net,P);             % 测试 - 输出为预测值
%---------------------------------------------------
% 结果作图
e = sum((dn_test-X).^2)                      % 测试误差的平方和
plot(1:length(n2),x2,'r+:',1:length(n2),X,'bo:')
title('+为真实值,o为预测值')
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群