从命令窗口(作为脚本)到功能

时间:2012-03-02 19:55:20

标签: matlab

该程序运行正常,但当我将其更改为功能时,显示以下错误:

     [Parent1index, Parent1Position, alldcel] = Parent1n(TotalnoOfGrids, noOfNodes, Penalties, test)
     ??? Index exceeds matrix dimensions.

     Error in ==> Parent1n at 10
     [~,index]=min(alldcel{t});

2 个答案:

答案 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交换不了