阵列中的唯一列?

时间:2015-07-07 17:13:46

标签: arrays matlab unique

我有一个像这样结构的数组:

a = [1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 4 4 4 4 5 5 5 5;
     1 1 1 1 2 2 2 2 2 2 2 1 1 1 1 2 2 3 3 1 1 1 2 3 4 4 4 1 1 1 1 2 2 3 3]; 

差不多,它是一个2乘n(为了简单起见,我在这个问题中简化了我的矩阵,减少了列数),没有真正的模式。我希望能够找到唯一的列数。所以在这个简化的例子中,我可以(但它需要一段时间)手工计数并注意到我的唯一矩阵b是:

b=  1 1 2 2 2 3 3 3 3 4 5 5 
    1 2 1 2 3 1 2 3 4 1 2 3

在MATLAB中,我可以做类似

的事情
size(b,2) 

获取唯一列的数量。在这个例子中

size(b,2) = 12

我的问题是,我如何从矩阵a转到矩阵b,以便我可以计算得到我所拥有的非常大的n维矩阵?

1 个答案:

答案 0 :(得分:2)

使用unique

a = [1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 4 4 4 4 5 5 5 5;
    1 1 1 1 2 2 2 2 2 2 2 1 1 1 1 2 2 3 3 1 1 1 2 3 4 4 4 1 1 1 1 2 2 3 3];

% Transpose to leverage the rows flag, then transpose back
b = unique(a.', 'rows').';

返回:

b =

     1     1     2     2     2     3     3     3     3     4     5     5
     1     2     1     2     3     1     2     3     4     1     2     3