我有一个像这样结构的数组:
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维矩阵?
答案 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