Matlab 根据另一个单元格数组对单元格数组进行排序
我有两个细胞阵列Matlab 根据另一个单元格数组对单元格数组进行排序,matlab,Matlab,我有两个细胞阵列 reference = [{'A'}, {'B'}, {'H'}, {'D'}, {'G'}]; array2 = [{'A'}, {'G'}, {'H'}, {'B'}, {'D'}]; 在matlab中是否有任何智能方法可以根据单元格数组引用对数组2进行排序 函数应该返回array2的索引,顺序与“reference”相同(array2将与reference相同) 例如 magic_order = function(array2, reference) .... end
reference = [{'A'}, {'B'}, {'H'}, {'D'}, {'G'}];
array2 = [{'A'}, {'G'}, {'H'}, {'B'}, {'D'}];
在matlab中是否有任何智能方法可以根据单元格数组引用对数组2进行排序
函数应该返回array2的索引,顺序与“reference”相同(array2将与reference相同)
例如
magic_order = function(array2, reference)
....
end
魔方命令(array2,reference)将返回
1,4,3,5,2
现在,如果我这样做了
array2(1,4,3,5,2)
我将得到与参考相同的结果
排序功能
reference = [{'A'}, {'B'}, {'H'}, {'D'}, {'G'}];
array2 = [{'A'}, {'G'}, {'H'}, {'B'}, {'D'}];
[a, b] = sort(reference)
isequal(reference, array2(b))
ans = 0
使用:
返回:
>> isequal(reference, array2(idx))
ans =
1
使用的
intersect
(我已忽略)的第一个输出以与reference
相同的顺序返回reference
和array2
的公共值。第三个输出是第一个输出中array2
的索引。假设单元阵列相等,这将是参考
中array2
的索引ismember的第二次输出也可能有用
reference = [{'A'}, {'B'}, {'H'}, {'D'}, {'G'}];
array2 = [{'A'}, {'G'}, {'H'}, {'B'}, {'D'}];
[~, pos] = ismember(reference,array2);
结果:
>> isequal(array2(pos),reference)
ans =
1
标题是匹配,问题是排序。是哪一个?对不起,我没想到,措辞会让人困惑。基本上,无论你建议什么,结果都会使(订单)排列2,与参考文献相同。这并不清楚。请提供您期望的输出示例。如前所述,显而易见的答案是
array2=reference
@user702846正如我在下面所指出的,你需要自己开始培养这种耐心。你最近刚刚在你的问题中添加了关键信息,在此之前还完全不清楚。请容忍那些在空闲时间尽力帮助你的人。@user702846我不知道你为什么希望人们在你不能把问题说清楚的时候努力阅读你的问题。
>> isequal(array2(pos),reference)
ans =
1