对向量进行排序,同时对另一个向量进行更改

时间:2015-02-24 14:22:24

标签: matlab sorting indexing

嘿所以我有一个双打矢量,如

A =

0.801803535307197   0.737925186997728   0.623273483797294   0.722046963741684   0.542990601252408   0.427383289758162   0.683274297039423   0.487075921796818   0.724212337440899   0.471205842265225   0.705330994860834   0.489516811267092   0.598658541230977   0.759194544103108   

我还有一个char类型数据的相应矢量列表,例如

B =

Neque porro quisquam est qui dolorem ipsum quia dolor sit amet consectetur adipisci velit 

(每个双有一个单词)

我想使用sort函数(sort(A))以数字方式命令双打,但我也希望在char列表上执行排序(以相同的方式) - 我该怎么做?

非常感谢您和您的家人

1 个答案:

答案 0 :(得分:0)

一些让你入门的例子:

B = 'Neque porro quisquam est qui dolorem ipsum quia dolor sit amet consectetur adipisci velit';
B_list=strsplit(B,' ')
A = rand(size(B_list))
[a_sort, ix] = sort(A)

b_sort = [B_list(ix); repmat({' '},1,numel(ix))]
b_sort = [b_sort{1:end-1}]

B_list =  'Neque'    'porro'    'quisquam'    'est'    'qui'    'dolorem'    'ipsum'    'quia'     'dolor'    'sit'    'amet'    'consectetur'    'adipisci'    'velit'
A =   0.8147    0.9058    0.1270    0.9134    0.6324    0.0975    0.2785   0.5469   0.9575    0.9649    0.1576    0.9706    0.9572    0.4854
a_sort =    0.0975    0.1270    0.1576    0.2785    0.4854    0.5469    0.6324    0.8147     0.9058    0.9134    0.9572    0.9575    0.9649    0.9706
ix =  6     3    11     7    14     8     5     1     2     4    13     9    10    12
b_sort = Neque velit quisquam ipsum dolor qui porro adipisci dolorem quia sit amet consectetur est