Matlab 如何在参数为空的情况下使此函数工作?
我有以下循环:Matlab 如何在参数为空的情况下使此函数工作?,matlab,Matlab,我有以下循环: for i=1:size(voisins1_TSP,1) cout(i)=CalculCost(voisins1_TSP(i,:),voisins1_Indexes(i,:),voisins1_Star(i,:),ring_costs,star_costs); end 但是,voisins1\u Star(i,:)可以为空,MATLAB对此不满意: 索引超出矩阵维度。 main计算中出错(第38行) 如何避免这种情况?您需要发布CalculCost以获得正确答案 但是,
for i=1:size(voisins1_TSP,1)
cout(i)=CalculCost(voisins1_TSP(i,:),voisins1_Indexes(i,:),voisins1_Star(i,:),ring_costs,star_costs);
end
但是,voisins1\u Star(i,:)
可以为空,MATLAB对此不满意:
索引超出矩阵维度。main计算中出错(第38行)
如何避免这种情况?您需要发布CalculCost
以获得正确答案
但是,根据您发布的内容,您的问题的解决方案是创建两个函数,CalculCost
和CalculCostEmpty
,并在for循环中进行检查:
for i=1:size(voisins1_TSP,1)
if isempty(voisins1_TSP(i,:))
cout(i)=CalculCostEmpty(voisins1_Indexes(i,:),voisins1_Star(i,:),ring_costs,star_costs);
else
cout(i)=CalculCost(voisins1_TSP(i,:),voisins1_Indexes(i,:),voisins1_Star(i,:),ring_costs,star_costs);
end
end
@拉斐尔·冈萨雷斯对不起,我不太明白这是怎么回事。。。请你解释一下我的情况好吗?我不知道你的函数CalculCost
对它的输入做了什么没有人能帮你解决你的情况。。。您只需要在rafaels链接中实现这个想法……如果元素不存在,请避免调用voisins1\u Star(i,:)
。您应该如何实现它取决于您的实际情况,但可能涉及一个if测试。请始终提供一个。
for i=1:size(voisins1_TSP,1)
if isempty(voisins1_TSP(i,:))
cout(i)=CalculCostEmpty(voisins1_Indexes(i,:),voisins1_Star(i,:),ring_costs,star_costs);
else
cout(i)=CalculCost(voisins1_TSP(i,:),voisins1_Indexes(i,:),voisins1_Star(i,:),ring_costs,star_costs);
end
end