gpt4 book ai didi

python - SciPy 反卷积函数

转载 作者:太空狗 更新时间:2023-10-29 21:05:54 27 4
gpt4 key购买 nike

我想使用 SciPy 的反卷积函数在给定两个高斯分布的情况下查找未知分布。 There is no documentation与 SciPy 中的这个函数相关联,所以我只是在寻找一个关于如何在我的情况下使用这个函数的例子。例如,给定两个正态分布 N(100, 1)、N(300, 2),我想了解如何找到反卷积 N(200, 1) 的分布。

>>> sample1 = np.round(scipy.around(scipy.stats.norm(100, 1).rvs(size=1000)))
>>> sample2 = np.round(scipy.stats.norm(300, 2).rvs(size=2000))
>>> signal.deconvolve(sample1, sample2)

上面的代码给了我负值,这似乎是错误的。如何从此反卷积中恢复分布 N(200, 1)?特别是,我认为我的问题是我不明白如何获得除数。

我真正想看到的是一个示例,说明我如何使用 SciPy 的反卷积从这些样本中恢复 ~ N(200, 1)。

最佳答案

我觉得你对你的期望有点困惑......因为我们都知道两个正态分布的卷积是另一种正态分布,均值是均值之和,方差是和对于方差,您似乎期望两个正态 随机样本 的卷积也将是一个正态随机样本。但事实并非如此:

a = scipy.stats.norm(100, 1).rvs(size=1000)
b = scipy.stats.norm(200, 1).rvs(size=1000)
c = scipy.convolve(a, b)
plt.subplot(311)
plt.hist(a, bins=50)
plt.subplot(312)
plt.hist(a, bins=50)
plt.subplot(313)
plt.hist(a, bins=50)

enter image description here

您可能正在考虑以下内容:

a = scipy.stats.norm(100, 10).pdf(np.arange(500))
b = scipy.stats.norm(200, 20).pdf(np.arange(500))
c = scipy.convolve(a, b)
m_ = max(a.max(), b.max(), c.max())
plt.subplot(311)
plt.axis([0, 1000, 0, 1.25*m_])
plt.plot(a)
plt.subplot(312)
plt.axis([0, 1000, 0, 1.25*m_])
plt.plot(b)
plt.subplot(313)
plt.axis([0, 1000, 0, 1.25*m_])
plt.plot(c)

enter image description here

无论如何,回到deconvolve...如果你用长度为mn的两个数组调用它,它将返回一个包含两个数组的元组:

  • 长度为 m - n + 1 的第一个是反卷积数组,即你应该将第二个数组与之卷积以获得第一个数组
  • 长度为 m 的第二个是用第二个与第一个返回的卷积替换第一个数组时的错误。

关于python - SciPy 反卷积函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15483346/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com