我需要确定每个唯一行向量在矩阵中出现的次数
假设我们有以下矩阵:
A = [1 0 0,
1 0 1,
0 1 0,
1 0 0,
0 1 0]
通过使用"唯一"函数,我们可以将唯一的行向量识别为:
U = [1 0 0,
1 0 1,
0 1 0]
那么,我们如何将两个[1 0 0] and [0 1 0]
在矩阵A中出现两次,而[1 0 1]
只出现一次制成表格呢
我尝试过"count"one_answers"sum"的各种应用,但它们是在向量元素上操作的,而不是在整个向量上操作的。非常感谢你在这个问题上的指导。
在Octave和MATLAB R2014a及更早版本中,您可以使用unique
和hist
:
[U,~,c] = unique(A, 'rows'); %unique rows are given by 'a'
occ=hist(c); occ=occ(occ~=0); %number of occurrences of each row is given by 'occ'
如果您有MATLAB R2014b或更高版本,请将使用折旧hist
的最后一行替换为histcounts
(建议使用)。
occ = histcounts(c);
或者是所有中最好/最快的,正如Luis Mendo所建议的,您可以使用accumarray
。Octave的文档实际上有一个与您的问题非常相似的例子。
occ = accumarray(c, 1);