how to fix this error 'Index in position 2 exceeds array bounds.'?

조회 수: 3(최근 30일)
댓글: Joel Lynch 2021년 6월 22일
I have a problem with this line of code B(:,g)=Popbest(:,iBest); fbest(g)= Fitbest(iBest); I tried it a lot and changed the numbers, but the error remains. The Error is Index in position 2 exceeds array bounds.
I hope someone has a solution to this problem.

채택된 답변

Joel Lynch
Joel Lynch 2021년 6월 9일
편집: Joel Lynch 2021년 6월 9일
The proximate reason for the error is that "Popbest" is empty, and so acessing the first column by Popbest(:,1) throws an error.
The most likely root cause is that the two if statements on lines 158 and 162 prevent "Popbest" from being defined in certain cases. A good approach is to make sure it has a consistent size set before the if statements, then set an alternative value in else branches.
  댓글 수: 4
Joel Lynch
Joel Lynch 2021년 6월 22일
The function effi does not appear to do anything, can you describe how you want it to work? currently effi just returns the division of global constants Z=N=W/Q.
Your plots are meant to plot rows of data in B
plot(1:GEN,B(1,:)); plot(1:GEN,B(2,:)); plot(1:GEN,B(3,:));
but your main for loop over "g" appends a column for each g. However the data in Popbest is always a single scalar, so you end up with a row vector B(1:GEN,1), that never has more than one row.

댓글을 달려면 로그인하십시오.

추가 답변(0개)





Community Treasure Hunt

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

Start Hunting!

Translated by