2017-06-15 5 views
6

私はRelDist(寸法単位は距離の単位です)という模範的な体積の大きな配列を持っています。私は数密度でもある「単位体積あたりの値の数」の分布を決定しようとしています。この図と似ているはずです:1次元配列の数値密度分布 - 異なる2回の試行

私は軸が10倍にスケールされていることを知っていますが、セットのプロットは間違いなく落ちます。 enter image description here

数学的には、私は2つの等価な方程式として設定:Nは、距離の自然対数に対してで分化された配列内の要素の数である

enter image description here

。また、rの別の因子を導入することによって、等価的に正規の導関数の形で書き直すこともできます。

同等に、

enter image description here

だから、今までRを増加させるために、私は、rの対数ビン当たりの要素のNの変化をカウントします。

現在のところ、私はヒストグラムの周波数カウントを設定していて、それに沿って音量を調整するのには問題があります。


試み1

これが使用しているdNの/ dlnr /容積式これも適切Iは、上記それと投稿を最初のプロットのような分布を示さないプロット

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] 

ビン番号を入力配列と同じ形にする場合にのみ機能します。バンの番号は恣意的でなければならないのですか?


試み2

これは等価dNの/ DR /容積式を使用しています。

少し楽になりますが、音量項を含めないと、ヒストグラム分布が得られます。これは少なくとも開始点です。

この試行では、配列にボリューム用語を含めるにはどうすればよいですか?

10のようなものの距離Rの値で開始し、その後、20の距離値Rに増加、Rに関しての数値の変化をカウントし、変更をカウントに増加値30、変更をカウントし、等々。ここで


あなたは再作成に興味があるならば、それは誰も答えを助けることができなかったので、私はケースの誰かに私の結果を提供します

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

答えて

0

私の配列のtxtファイルです将来の使用にこれを使用したい:

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] 
関連する問題