我使用histc错了,还是这个MATLAB的错?

Pyr*_*cal 4 matlab histogram bins

好的,这是MATLAB中的一些代码:

data = [1 1.5 2 3 4 4.5 5 6 7 7 7 0 0 0];

histc(data, [1:1:5])
histc(data, [1:1:5, inf])
histc(data, [-inf, 1:1:5])
Run Code Online (Sandbox Code Playgroud)

输出以下内容:

ans = 2     1     1     2     1
ans = 2     1     1     2     5     0
ans = 3     2     1     1     2     1
Run Code Online (Sandbox Code Playgroud)

我的问题是,为什么当你在bin大小中使用inf时,MATLAB会返回一个无用的0(在这种情况下意味着> = 5)?

它不总是零吗?帮助说输出将始终与bin大小相同,但在这种情况下,这不是一个糟糕的规范吗?

gno*_*ice 7

这实际上是HISTC的正确行为.使用语法时:

n = histc(x,edges);
Run Code Online (Sandbox Code Playgroud)

然后,从文档:

如果边(k)<= x(i)<边(k + 1),则n(k)对值x(i)进行计数.最后一个bin计算与边匹配的任何x值(结束).

因此,您给出的最后一个边值返回与其完全匹配的事物的数量.当inf是最后一个边缘值时,它计为0(即数据中没有inf).当5是最后一个边缘值时,它与数据中的1个值完全匹配.