好的,这是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])
输出以下内容:
ans = 2 1 1 2 1
ans = 2 1 1 2 5 0
ans = 3 2 1 1 2 1
我的问题是,为什么当你在bin大小中使用inf时,MATLAB会返回一个无用的0(在这种情况下意味着> = 5)?
它永远不会是零吗?帮助说输出将始终与bin大小相同,但在这种情况下这不是一个糟糕的规范吗?
答案 0 :(得分:7)
这实际上是HISTC的正确行为。使用语法时:
n = histc(x,edges);
然后,从文档:
n(k)如果边(k)则计算值x(i) < = x(i)<边缘(K + 1)。最后一个垃圾箱 计算匹配的x的任何值 边缘(端部)。
因此,您给出的最后一个边值会返回完全匹配的内容的数量。当 inf 是最后一个边缘值时,它会计为0(即数据中没有 inf )。当5是最后一个边缘值时,它与数据中的1个值完全匹配。