fftconvolve 的意外输出

问题描述 投票:0回答:0

我有两个分布,其中概率密度 来自 [-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)

python scipy statistics distribution convolution
© www.soinside.com 2019 - 2024. All rights reserved.