朱莉娅的直方图计算

时间:2015-09-07 10:05:28

标签: histogram julia

参考julia-lang文件:

  

hist(v [,n])→e,计数

计算v的直方图,可选择使用大约n个区间。返回值是范围e,其对应于箱的边缘,并且计数包含​​每个箱中的v的元素的数量。注意:Julia不会忽略计算中的NaN值。

我选择了一个样本范围的数据

testdata=0:1:10;

然后使用hist函数计算1到5个柱子的直方图

hist(testdata,1) # => (-10.0:10.0:10.0,[1,10])
hist(testdata,2) # => (-5.0:5.0:10.0,[1,5,5])
hist(testdata,3) # => (-5.0:5.0:10.0,[1,5,5])
hist(testdata,4) # => (-5.0:5.0:10.0,[1,5,5])
hist(testdata,5) # => (-2.0:2.0:10.0,[1,2,2,2,2,2])

如你所知,当我想要1个bin时,它会计算2个bin,当我想要2个bin时,它会计算3个。

为什么会这样?

2 个答案:

答案 0 :(得分:9)

作为编写基础函数的人:目的是获得基于10计数系统(即10 k ,2×10 k ,5×10 k )。如果您想要更多控制,您还可以指定精确的箱边。

答案 1 :(得分:5)

文档中的关键字是近似。您可以在Julia的hist模块here中查看base实际为您自己做的事情。

当您执行hist(test,3)时,您实际上正在调用

hist(v::AbstractVector, n::Integer) = hist(v,histrange(v,n))

也就是说,在第一步中,n参数被FloatRange函数转换为histrange,其代码可以找到here。正如您所看到的,这些步骤的计算并不完全是直截了当的,因此您应该稍微使用此函数来弄清楚它是如何构建构成直方图基础的范围的。