我正在使用hist
来计算Matlab中矩阵中值的出现次数。
我认为我使用它是错误的,因为它给了我完全奇怪的结果。你能帮我理解发生了什么吗?
当我运行这段代码时,我会根据需要获得countsB
rng default;
B=randi([0,3],10,1);
idxB=unique(B);
countsB=(hist(B,idxB))';
即。
B=[3;3;0;3;2;0;1;2;3;3];
idxB=[0;1;2;3];
countsB=[2;1;2;5];
当我运行另一段代码时,我得到countsA
A=ones(524288,1)*3418;
idxA=unique(A);
countsA=(hist(A,idxA))';
即
idxA=3148;
countsA=[zeros(1709,1); 524288; zeros(1708,1)];
我做错了什么?
答案 0 :(得分:3)
idxA是一个标量,表示此上下文中的二进制数。 将idxA设置为矢量,例如[0,3418]会给你一个以0和3418为中心的bin的组合,类似于你用idxB得到的,也是一个向量
答案 1 :(得分:3)
要添加其他答案:您可以使用显式总和替换hist
:
idxA = unique(A);
countsA = sum(bsxfun(@eq, A(:), idxA(:).'), 1);
答案 2 :(得分:2)
我认为它与:
有关N = HIST(Y,M), where M is a scalar, uses M bins.
我想你会认为它会这样做:
N = HIST(Y,X), where X is a vector, returns the distribution of Y
among bins with centers specified by X.
换句话说,在第一种情况下,matlab假设你要求3418个箱子