找到每一行的频率(2)

时间:2014-03-29 16:54:23

标签: matlab

根据我之前的问题,我有几个mx2矩阵,其行包括(0,1),( - 1,0),(0,1),(0,-1),(1,1),( - 1,1),(1,-1),( - 1,-1)我想找到每个上面坐标的频率,我用unique和hisc来给我每行的频率。现在,由于我想比较不同的矩阵,我希望每个矩阵都有8行的相应输出,其中每行表示上述每个坐标出现的次数。特别是,如果例如(0,1)不在我的矩阵行中,我希望看到零频率。

例如,如果A = [1 1; 0 1; 1 0; -1 1; -1 1; 0 1; 0 1]

我希望看到类似的内容:

-1    -1   0
-1     0   0
-1     1   2
 0    -1   0
 0     1   3
 1    -1   0
 1     0   1
 1     1   1

有办法吗?感谢。

1 个答案:

答案 0 :(得分:0)

A =     [ 1  1
          0  1
          1  0
         -1  1
         -1  1
          0  1
          0  1 ];

rows = [ -1 -1
         -1  0
         -1  1
          0 -1
          0  1
          1 -1
          1  0
          1  1 ];

count = sum(squeeze(all(bsxfun(@eq, A.', permute(rows, [2 3 1])))));

当然,如果您需要问题中显示的表单中的结果,只需构建矩阵result = [rows count.']