2016-11-25 41 views
0

兩個隨機變量x和y之和的pdf由各個pdf的卷積給出。在下面的代碼中,我從每個文件讀取單列數據並顯示直方圖。我如何計算pdf1和pdf2的卷積。兩個pdf的卷積

import pandas as pd 

import matplotlib.pyplot as plt 

data1 = pd.read_csv('file1.txt', header=None) 

data2 = pd.read_csv('file2.txt', header=None) 

nbins = int(data1.max()-data1.min()) 

pdf1 = plt.hist(data1, bins=nbins, normed=True) 


nbins = int(data2.max()-data2.min()) 

pdf2 = plt.hist(data2, bins=nbins, normed=True) 

plt.show() 

回答

1

實際上,你可以使用scipy.signal.convolve計算兩個序列之間的卷積。看看文檔here

操作步驟如下:

from scipy.signal import convolve 

# Define your arrays of data 
pdf_1 = plt.hist(data1, bins=nbins, normed=True) 
pdf_2 = plt.hist(data2, bins=nbins, normed=True) 

# Convolve the two arrays 
pdf_1_2 = convolve(pdf_1, pdf_2, mode="valid") 

注:您可以訪問其他模式來計算卷積。在零填充模式下,valid模式被取消。

+0

謝謝。如你所說,convolve()對數組起作用,但pdf_1和pdf_2是元組。 convolve(pdf_1 [0],pdf_2 [0])有效,但它只給出y軸值而不是整個直方圖。 – kiasari