我有两个分布,其中概率密度 来自 [-0.05, 0) 为 0 并使用 [0,1] 的插值定义。
import matplotlib.pyplot as plt
import numpy as np
from scipy import signal
step = 1e-3
x = np.arange(-0.05, 1, step)
x_0minus = x[x<0]
x_0plus = x[x>0]
pdf1 = np.concatenate([np.repeat(0, len(x_0minus)), np.interp(x_0plus, [0, 0.08, 0.28], [0, 80, 0])])
pdf2 = np.concatenate([np.repeat(0, len(x_0minus)), np.interp(x_0plus, [0, 0.1, 0.3, 0.31], [60, 60, 60, 0])])
我们绘制这些以供参考。
plt.scatter(x = x, y = pdf1)
plt.scatter(x = x, y = pdf2)
我不明白为什么当我使用 fftconvolve 对它们进行卷积时,结果分布对于低于 0 的值具有非零概率密度。我想在不将范围设置为 [-1,1] 的情况下解决这个问题,因为在我的实际用例中,这将是一种计算浪费。
res = signal.fftconvolve(pdf1 / pdf1.sum(), pdf2 / pdf2.sum(), 'same')
plt.scatter(x = x, y = res)