我有以下循环:
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);
如何避免这种情况呢?
答案 0 :(得分:1)
您需要发布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