数组中的唯一列?
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
我有一个结构如下的数组:
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