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中的错误;哦,再也没有同样的错误了!