我在Matlab中有(n x n)矩阵。例如(n = 3):
A=[1,2,3; 4,5,6; 1,9,9]
我想计算前n个数字的出现次数(并创建矩阵B)。 输出:
B=[2,1,1]
谢谢。
答案 0 :(得分:1)
这可以通过bsxfun
和sum
非常优雅地完成。
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)
如果你有统计工具箱,你可以使用tabulate
(doc),否则countmember
(matlab 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))