matlab - 矩阵中出现的次数

时间:2014-02-17 13:58:20

标签: matlab matrix

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

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

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

B=[2,1,1]

谢谢。

4 个答案:

答案 0 :(得分:1)

这可以通过bsxfunsum非常优雅地完成。

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

但是,我相信你的例子不正确。在您的示例矩阵

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

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

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

答案 1 :(得分:0)

如果你有统计工具箱,你可以使用tabulatedoc),否则countmembermatlab exchange)会这样做。

TABLE = tabulate(A(:));

答案 2 :(得分:0)

这应该可以解决问题:

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

  for i=1:length(A)

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

答案 3 :(得分:0)

可以使用ismember

完成此操作
[lia,lib]=ismember(A,A(1,:))
h=hist(lib(lib>0),1:size(A,2))