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