关于matlab:matlab-矩阵中的出现次数

matlab - number of occurrences in matrix

我在Matlab中有(n x n)个矩阵。例如(n = 3):

1
A=[1,2,3; 4,5,6; 1,9,9]

我想计算前n个数字的出现次数(并创建矩阵B)。
输出:

1
B=[2,1,1]

谢谢。


使用bsxfunsum可以非常优雅地完成此操作。

1
sum (bsxfun (@eq, A(1:n), A(:)))

但是,我认为您的示例是错误的。在您的示例矩阵

1
A=[1,2,3; 4,5,6; 1,9,9]

前3个元素不是[1 2 3]而是[1 4 1],因为在Matlab中,元素按列优先顺序排列。如果要检查第一行中的前n个元素,则应该执行以下操作:

1
sum (bsxfun (@eq, A(1,1:n), A(:)))

这可以通过ismember

完成

1
2
[lia,lib]=ismember(A,A(1,:))
h=hist(lib(lib>0),1:size(A,2))


这应该可以解决问题:

1
2
3
4
5
6
  A=[1,2,3; 4,5,6; 1,9,9];

  for i=1:length(A)

      B(i) = length(find(A(1,i) ==A));  
  end


如果有stat工具箱,则可以使用tabulate(文档),否则使用countmember(matlab交换)。

1
TABLE = tabulate(A(:));