尽管参数为空,如何使这个功能工作?

时间:2017-12-08 09:53:52

标签: 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_Star(i,:)可以为空,MATLAB对此不满意:

  

指数超出矩阵尺寸    Mainipulation中的错误(第38行)

cout(i)=CalculCost(voisins1_TSP(i,:),voisins1_Indexes(i,:),voisins1_Star(i,:),ring_costs,star_costs);

如何避免这种情况呢?

1 个答案:

答案 0 :(得分:1)

您需要发布CalculCost才能得到正确答案。

但根据您发布的内容,解决您的问题的方法是创建两个函数CalculCostCalculCostEmpty,并检查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