2012-05-14 70 views
0

我不知道该怎么做。我有一些具有重复值的矩阵,我想对它们进行排序并获得排序索引的矩阵。例如:Matlab - find(x == a)当a是矩阵时

a = [1 4 3 10 8 2]; 
b = sort(a); 

% This doesn't work but I wish it did - that's what I'm looking for. 
% idx = find(a==b); idx = [1 6 3 2 5 4]; 

[v idx] = ismember(b,a); 

但是,当有重复的值和NaN时,会产生错误。尝试:

a = [1 NaN 4 2 10 8 2]; 
b=sort(a); 
[v, i] = ismember(b,a); 

给出[1 7 7 3 6 5 0],这是有效的,但我需要它是[1 4 7 3 6 5 0]。

我可以稍后处理它,但如果它返回上述结果将会更加优雅。

回答

2

sort有两个输出值版本,让你正是你要找的指标:

a = [1 4 3 10 8 2]; 
[b, idx] = sort(a); 

输出

idx = 
    1  6  3  2  5  4 

这与NaN S以及正确的工作原理:

a = [1 NaN 4 2 10 8 2]; 
[b, idx] =sort(a); 
>> idx 
idx = 
    1  4  7  3  6  5  2 
>> b 
b = 
    1  2  2  4  8 10 NaN 
相关问题