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 件のコメント

Geoff Hayes
Geoff Hayes 2015 年 9 月 7 日
abduall - which line of code generates this error? Please copy and paste the full error message into question.
Typically, the Index exceeds matrix dimensions. message indicates that your code is trying to access an array using an index that exceeds the dimensions of this array. For example,
z = zeros(1,10);
z(11) = 42;
would generate the same error that you are observing (since z has only ten elements and the second line of code is trying to access the 11th element).
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 日

0 投票

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 件のコメント

abduall hassn
abduall hassn 2015 年 9 月 7 日
編集済み: Walter Roberson 2015 年 9 月 7 日
Dear Greig
i have done changing but stile same problem
Walter Roberson
Walter Roberson 2015 年 9 月 7 日
Please show your current code and indicate which line the error message is appearing on.
abduall hassn
abduall hassn 2015 年 9 月 7 日
Walter Roberson sir the code showing above u can see it
this part show error
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 月 8 日
To echo Walter, exactly what line is causing the problem? Not what part, the exact line.
What are the values for...
length(net.inputs{1}.processFcns)
length(net.inputs{1}.processFcns{1})
length(net.inputs{1}.processSettings)
length(net.inputs{1}.processSettings{1})
Is there a mismatch?
Walter Roberson
Walter Roberson 2015 年 9 月 9 日
Ai2 = cell2mat(Xf(2,:));
for i=1:length(net.inputs{1}.processFcns)
fcn = net.inputs{1}.processFcns{i};
settings = net.inputs{1}.processSettings{i};
Ai2 = feval(fcn,'apply',Ai2,settings);
end
Ai2 = mat2cell([zeros(10,2); Ai2],[10 1],ones(1,2));
abduall hassn
abduall hassn 2015 年 9 月 9 日
Sir Walter Robesron and Greg
When i did changed but still i have same problem
Walter Roberson
Walter Roberson 2015 年 9 月 9 日
Show your exact changed code, and show the complete error message including the part where it shows exactly which line the problem is occurring on.
abduall hassn
abduall hassn 2015 年 9 月 9 日
for i=1:length(net.inputs{1}.processFcns)
fcn = net.inputs{1}.processFcns{i};
settings = net.inputs{1}.processSettings{i};
Ai2 = feval(fcn,'apply',Ai2,settings);
end
Index exceeds matrix dimensions.
Walter Roberson
Walter Roberson 2015 年 9 月 9 日
... and show the complete error message including the part where it shows exactly which line the problem is occurring on
Also at the command line give the command
dbstop if error
and run the code. When it stops with the error, show us
size(net.inputs{1}.processFcns)
size(net.inputs{1}.processSettings)
abduall hassn
abduall hassn 2015 年 9 月 9 日
編集済み: Walter Roberson 2015 年 9 月 10 日
Thank for ur answer
the previous error it was
Ai2 = cell2mat(Xf(2,:));
but i solved it
but i got this error
Number of input states does not match net.numInputs.
Y2 = sim(netc,X2,Xi2,Ai2);
Thank u alot sir
Greig
Greig 2015 年 9 月 10 日
I guess my suspicions about where the error was were wrong... Clearly, Sherlock Holmes I am not!
Now that the my powers of deductions are proven to be utterly useless, you will need to give us much more information about this new error.
The function "sim" is completely unknown to me and the error is internal to that function, so with out the code and exactly where the error is happening I'm afraid to say I, and probably most others, won't be of much help.
Walter Roberson
Walter Roberson 2015 年 9 月 10 日
sim() is from the Neural Network toolbox
abduall hassn
abduall hassn 2015 年 9 月 10 日
編集済み: Walter Roberson 2015 年 9 月 10 日
Walter Roberson sir
I am very sorry for disturbed u
sir what happened that i am having 7 year data from 2008 to 2014 and this contains two attributes one date and either packets numbers
i want to forecast next period 2015
sir i got this code but i am getting error
can u provide me code for forecasting next period 2015
Thank so much sir
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 件)

カテゴリ

ヘルプ センター および File ExchangeDeep Learning Toolbox についてさらに検索

タグ

タグが未入力です。

質問済み:

2015 年 9 月 7 日

編集済み:

2015 年 9 月 10 日

Community Treasure Hunt

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

Start Hunting!

Translated by