好的,这是 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 大小相同,但在这种情况下,这不是一个糟糕的规范吗?
最佳答案
这实际上是 HISTC 的正确行为。使用语法时:
n = histc(x,edges);
然后,从文档中:
因此,您给出的最后一个边值返回与它完全匹配的事物的计数。当 inf 是最后一个边缘值时,计数为 0(即数据中没有 inf s)。当 5 是最后一个边缘值时,它正好匹配数据中的 1 个值。