What is wrong on these code ?

2 views (last 30 days)
abduall hassn
abduall hassn on 7 Sep 2015
Edited: Walter Roberson on 10 Sep 2015
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 Comments
abduall hassn
abduall hassn on 7 Sep 2015
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));

Sign in to comment.

Accepted Answer

Greig
Greig on 7 Sep 2015
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 Comments
Greig
Greig on 10 Sep 2015
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.

Sign in to comment.

More Answers (0)

Tags

No tags entered yet.

Community Treasure Hunt

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

Start Hunting!