Matlab 从命令窗口(作为脚本)转到函数

Matlab 从命令窗口(作为脚本)转到函数,matlab,Matlab,程序工作正常,但当我将其更改为功能时,显示以下错误: [Parent1index, Parent1Position, alldcel] = Parent1n(TotalnoOfGrids, noOfNodes, Penalties, test) ??? Index exceeds matrix dimensions. Error in ==> Parent1n at 10 [~,index]=min(alldcel{t}); 因为alldcell

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

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

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

因为
alldcell{t}
对于
t
的某些值可能不存在,如果在

if Penalties{t}(r)== 0;
   alldcel{t}(r)=inf;
end
他从不满足。对于某些
t
,假设
惩罚{t}
的所有值都不同于零。然后您将永远不会将
inf
分配给
alldcell{t}
。这意味着,对于某些
r
,只有当
惩罚{t}
为零时,才扩展单元格数组
alldcell
。如果从未满足该条件,
alldcell{t}
将不存在,请求它将导致单元格数组错误

您至少应该使用
alldcell=cell(TotalnoOfGrids,1)
对其进行初始化


另外,使用
a==0
比较等式与零不是一个好主意。您应该使用
abs(a)ok与此代码一起工作:
如果惩罚{t}(r)>0;
alldcel{t}(r)=alldcel{t}(r);

else alldcel{t}(r)=inf但将if语句与else进行交换时没有

当代码正确缩进时无需反勾选代码,谢谢您的尝试!当我识别时,它并没有放在灰色背景中,也不清楚。谢谢你的评论,请检查一下,你能把它变成一个脚本,在命令行中执行“全部清除”命令并启动脚本吗?@Daniyar是的,它正在工作,但如果我调用函数,其他错误弹出:???来自非单元格数组对象的单元格内容引用。12口袋=测试{t}处==>Parent1n中的错误;哦,再也没有同样的错误了!