我有一个数组:
comb = [['',0],['',0],['',0],['',0],['',0],['',0],['',0],['',0],['',0],['',0]];
已经准备好填充数据,如下所示:
for i = 1:10
comb(i) = [temp_gen(i, 1:end),temp_fitness(i)];
end
其中temp_gen
是一个字符串数组,temp_fitness
是一个整数数组,但它给出了以下错误:
In an assignment A(:) = B, the number of elements in A and B must be the same.
Error in work (line 23)
comb(i) = [temp_gen(i, 1:end),temp_fitness(i)];
导致此错误的原因是什么?我能在一个元素中使用两种不同的类型吗? (当我用一个整数数组替换temp_gen
时,我仍然遇到同样的错误。
或者,有没有一种方法可以组合或关联不同数组中的相应元素,以便我可以对它们进行排序?例如,假设我有一个字符串数组和一个相应的整数数组,我想按整数的大小对它们进行排序。
说:string = 'a', 'b', 'c';
和ints = (1, 2, 3);
如何将'a'
与1
等关联起来,这样当我将ints
排序为3,2时, 1 string
也会更改为c, b, a
答案 0 :(得分:1)
你有几个选择:
最常用的是使用cell array,因为它可以收集多种类型,所以
for i = 1:10
comb{i} = {temp_gen(i, 1:end),temp_fitness(i)};
end
或更可能
for i = 1:10
comb(i,1:2) = {temp_gen(i, 1:end),temp_fitness(i)};
end
或者您可以使用mat2cell
comb(:,2) = mat2cell(temp_fitness, ones(numel(temp_fitness),1))
comb(:,1) = temp_gen;
另一种选择是使用struct s:
的数组for i = 1:10
comb(i).name = temp_gen(i, 1:end);
comb(i).number = temp_fitness(i);
end
第三个选项是将它们保持为两个独立的数组,并确保元素彼此对应。下面是一个如何对一个数组进行排序的示例,该数组在一秒内保持正确元素中的相应值(即使用sort
的第二个输出):
[temp_fitness, ind] = sort(temp_fitness);
temp_gen = temp_gen(ind);