该程序运行正常,但当我将其更改为功能时,显示以下错误:
[Parent1index, Parent1Position, alldcel] = Parent1n(TotalnoOfGrids, noOfNodes, Penalties, test)
??? Index exceeds matrix dimensions.
Error in ==> Parent1n at 10
[~,index]=min(alldcel{t});
答案 0 :(得分:1)
如果alldcell{t}
的某些值可能不存在t
,如果在
if Penalties{t}(r)== 0;
alldcel{t}(r)=inf;
end
永远不会满足。假设某些t
Penalties{t}
的所有值都不为零。然后,您永远不会将inf
分配给alldcell{t}
。这意味着,对于某些alldcell
,当Penalties{t}
为零时,您只是扩展单元格数组r
。如果永远不满足条件,alldcell{t}
将不存在并且要求它将给出单元数组错误。
您至少应该使用alldcell = cell(TotalnoOfGrids,1)
初始化它。
此外,使用a==0
将等式与零进行比较并不是一个好主意。您应该将abs(a)<tol
用于一些小值tol
。
答案 1 :(得分:0)
确定使用此代码的函数有效:if Penalties{t}(r)> 0;
alldcel {t}(r)=alldcel{t}(r);
else alldcel {t}(r)=inf;
但是如果声明与else交换不了