数组中的唯一列?

Unique Columns Across an Array?

我有一个结构如下的数组:

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 x 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 维矩阵进行计算?

使用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').';

哪个returns:

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