필터 지우기
필터 지우기

What is wrong on these code ?

조회 수: 5 (최근 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
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일
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월 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개)

카테고리

Help CenterFile Exchange에서 Logical에 대해 자세히 알아보기

태그

아직 태그를 입력하지 않았습니다.

Community Treasure Hunt

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

Start Hunting!

Translated by