4

好的,这是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 大小的长度相同,但在这种情况下,这不是一个糟糕的规范吗?

4

1 回答 1

7

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

n = histc(x,edges);

然后,从文档中:

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

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

于 2009-06-12T19:14:26.980 回答