MATLAB Answers

What is wrong on these code ?

1 ビュー (過去 30 日間)
abduall hassn
abduall hassn 2015 年 9 月 7 日
編集済み: Walter Roberson 2015 年 9 月 10 日
Dear brother
I applied these code for forecasting 10 days head
I used NARNET approach but i got error a
also i am using matalb R2013a
These error
Index exceeds matrix dimensions.
t=load('D:\myexp\RKMS with logfun\2009data.csv');
time = 1:length(t)
n=length(t);
%-------------------------------------------------------------
%-----------------------------------------------------------------
t = tonndata(t,false,false);
%------------------------------------------------------------
% ---------------------------------DESIGN NETWORK
ID=1:2;
HL=20;
net = narnet(ID,HL);
%--------------------------------Training the network
[Xs,Xi,Ai,Ts] = preparets(net,{},{},t);
net = train(net,Xs,Ts,Xi,Ai);
%------------------------------------ SIMULATE NETWORK FOR ORIGINAL SERIES
[Y,Xf,Af] = sim(net,Xs,Xi,Ai);
%-----------------------------
netc = closeloop(net);
view(netc)
% 10 More Steps for the first (now only) input
X2 = num2cell(rand(1,10));
% Initial input states for closed loop continuation will be the
% first input's final states.
Xi2 = Xf(1,:);
% Initial 2nd layer states for closed loop contination will be the
% processed second input's final states. Initial 1st layer states
% will be zeros, as they have no delays associated with them.
Ai2 = cell2mat(Xf(2,:));
for i=1:length(net.inputs{1}.processFcns)
fcn = net.inputs{i}.processFcns{i};
settings = net.inputs{i}.processSettings{i};
Ai2 = feval(fcn,'apply',Ai2,settings);
end
Ai2 = mat2cell([zeros(10,2); Ai2],[10 1],ones(1,2));
% Closed loop simulation on X2 continues from open loop state after X.
Y2 = sim(netc,X2,Xi2,Ai2);
  2 件のコメント
abduall hassn
abduall hassn 2015 年 9 月 7 日
This part
Ai2 = cell2mat(Xf(2,:));
for i=1:length(net.inputs{1}.processFcns)
fcn = net.inputs{i}.processFcns{i};
settings = net.inputs{i}.processSettings{i};
Ai2 = feval(fcn,'apply',Ai2,settings);
end
Ai2 = mat2cell([zeros(10,2); Ai2],[10 1],ones(1,2));

サインインしてコメントする。

採用された回答

Greig
Greig 2015 年 9 月 7 日
I suspect the problem is in the for loop, most probably here...
fcn = net.inputs{i}.processFcns{i};
settings = net.inputs{i}.processSettings{i};
"i" is indexing the elements of net.inputs.processFcns, not net.inputs Should these lines perhaps be the following?
fcn = net.inputs{1}.processFcns{i};
settings = net.inputs{1}.processSettings{i};
As a side, it is good practice not to use "i" or "j" for indexing in MATLAB. These are reserved for complex numbers. I tend to use "ii" or "jj".
  14 件のコメント
Greig
Greig 2015 年 9 月 10 日
Walter - Thanks for the info, it is not a toolbox that I have.
Abduall - Try using size() on the inputs and then have a look at this answer HERE, where someone encounters a similar problem.

サインインしてコメントする。

その他の回答 (0 件)

タグ

タグが未入力です。

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by