how to fix this error 'Index in position 2 exceeds array bounds.'?
2 views (last 30 days)
Show older comments
NURSYAFIKAH MARZUKI
on 9 Jun 2021
Commented: Joel Lynch
on 22 Jun 2021
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.
0 Comments
Accepted Answer
Joel Lynch
on 9 Jun 2021
Edited: Joel Lynch
on 9 Jun 2021
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 Comments
Joel Lynch
on 22 Jun 2021
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.
More Answers (0)
See Also
Categories
Find more on Matrix Indexing in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!