how to fix this error 'Index in position 2 exceeds array bounds.'?
1 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
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
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 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Matrix Indexing 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!