我有一个矩阵A = [1 2 4 4 8 8 8 4 1 7 7 8 8 9]
,我想创建一个在A中具有相同元素数的新矩阵。
我有两个1,一个2,三个4,两个7,五个8和一个9。
我的新矩阵应为[数字;每个数字的数量]
newmatrix = [1 2 4 7 8 9; 2 1 3 2 5 1]
如何从A创建新矩阵?
答案 0 :(得分:4)
答案 1 :(得分:1)
newmatrix = [unique(A); histc(A, unique(A))]
unique
函数返回向量中所有数字的列表,而histc
计算原始向量中每次出现的唯一值。
请注意,对于大型向量,Luis' answer会更快,因为它只调用unique
一次。但是,如果你是那些喜欢单行的人之一,那么这个答案应该可以解决问题。
如果您的矢量可能是垂直的或水平的,那么上面的结果将导致2nx1
向量而不是nx2
矩阵。一种可能性是像这样调用reshape
:
result = reshape([uA; histc(A, uA)],[],2);