朱莉娅的直方图计算

Rez*_*lan 7 histogram julia

请参阅julia-lang文件:

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

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

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

testdata=0:1:10;
Run Code Online (Sandbox Code Playgroud)

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

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])
Run Code Online (Sandbox Code Playgroud)

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

为什么会这样?

Sim*_*rne 9

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


Nil*_*dat 5

文档中的关键词是近似的.您可以hist此处查看 Julia base模块中您自己的实际操作.

当你这样做时hist(test,3),你实际上正在打电话

hist(v::AbstractVector, n::Integer) = hist(v,histrange(v,n))
Run Code Online (Sandbox Code Playgroud)

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