how to fix this error 'Index in position 2 exceeds array bounds.'?
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
NURSYAFIKAH MARZUKI
am 9 Jun. 2021
Kommentiert: Joel Lynch
am 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 Kommentare
Akzeptierte Antwort
Joel Lynch
am 9 Jun. 2021
Bearbeitet: Joel Lynch
am 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 Kommentare
Joel Lynch
am 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.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!