一维阵列的数密度分布 - 2 次不同的尝试

Posted

技术标签:

【中文标题】一维阵列的数密度分布 - 2 次不同的尝试【英文标题】:Number density distribution of an 1D-array - 2 different attempts 【发布时间】:2017-11-17 14:52:07 【问题描述】:

我在模拟体积中有大量元素,我称之为RelDist(其中维度是距离单位)。我试图确定“每单位体积的值数”的分布,这也是数字密度。它应该类似于此图:

我知道轴是以 10 为底的对数缩放,该集合的图肯定会下降。

在数学上,我将其设置为两个等效方程:

其中 N 是数组中相对于距离的自然对数进行微分的元素数。也可以通过引入另一个因子 r 以正则导数的形式等价地重写。

同样,

因此,对于不断增加的 r,我想计算每个 r 的对数仓中元素 N 的变化。

截至目前,我无法在直方图中设置频率计数,同时在旁边容纳音量。


尝试 1

这是使用 dN/dlnr/体积方程

def n(dist, numbins):

    logdist= np.log(dist)
    hist, r_array = np.histogram(logdist, numbins)
    dlogR = r_array[1]-r_array[0]

    x_array = r_array[1:] - dlogR/2

    ## I am condifent the above part of this code is correct.
    ## The succeeding portion does not work.

    dR = r_array[1:] - r_array[0:numbins] 
    dN_dlogR = hist * x_array/dR

    volume = 4*np.pi*dist*dist*dist

    ## The included volume is incorrect

    return [x_array, dN_dlogR/volume]

绘制它甚至不能正确显示像我在上面发布的第一个图那样的分布,并且它仅在我选择 bin 编号与我的输入数组的形状相同时才有效。包子号应该是任意的吧?


尝试 2

这是使用等效的 dN/dr/体积方程。

numbins = np.linspace(min(RelDist),max(RelDist), 100)
hist, r_array = np.histogram(RelDist, numbins)

volume = 4*np.float(1000**2)

dR = r_array[1]-r_array[0]
x_array = r_array[1:] - dR/2


y = hist/dR

稍微简单一点,但不包括体积项,我得到一种直方图分布,这至少是一个开始。

通过这种尝试,如何将音量项包含在数组中?

示例

从距离 R 值 10 开始,计算相对于 R 的数字变化,然后增加到 20 的距离值 R,计算变化,增加到 30 的值,计算变化,等等以此类推。


如果您有兴趣重新创建它,这是我的数组的 txt 文件

https://www.dropbox.com/s/g40gp88k2p6pp6y/RelDist.txt?dl=0

【问题讨论】:

【参考方案1】:

由于没有人能够帮助回答,我将提供我的结果以防有人想使用它以备将来使用:

def n_ln(dist, numbins):
    log_dist = np.log10(dist)
    bins = np.linspace(min(log_dist),max(log_dist), numbins)
    hist, r_array = np.histogram(log_dist, bins)

    dR = r_array[1]-r_array[0]    
    x_array = r_array[1:] - dR/2
    volume =  [4.*np.pi*i**3. for i in 10**x_array[:] ]

    return [10**x_array, hist/dR/volume]

【讨论】:

以上是关于一维阵列的数密度分布 - 2 次不同的尝试的主要内容,如果未能解决你的问题,请参考以下文章

第三部分 概率_2 一维随机变量的分布

Netlogo turtle移动距离满足某个概率分布函数的code怎么写?

基于密度的聚类方法

ggplot2中密度曲线下的阴影区域

使用 ggplot2 从两个不同的数据帧创建密度图

怎么用MATLAB产生2维或者多维的高斯分布数据