Python中的反卷积

信息处理 卷积 Python 反卷积
2022-02-03 22:39:13

我正在尝试为我正在从事的项目使用和理解 SciPy 的反卷积。我在理解如何使用它时遇到了一些麻烦。

我想做的是从离散的高斯分布中提取两个 PMF,并使用反卷积恢复未知分布。我的理解是,如果我从 ~N(10, 1) 和 ~N(30, 2) 中去卷积 PMF,我应该为分布 ~N(20, 1) 恢复 PMF。我怎样才能在 SciPy 中做到这一点。如果我能看到一个例子,那就太好了。在此先感谢您的帮助。

1个回答

该功能基于 Matlab 的deconv,因此阅读该页面应该有助于理解它。

这是我为 SciPy 的反卷积编写的文档字符串,但尚未提交,因为我不确定它是否 100% 正确:https ://github.com/scipy/scipy/pull/430#issuecomment-13675004

deconvolve 的输入是signaland divisor,而您的输出是quotientand remaindersignal最初是由 生成的signal = convolve(divisor, quotient) + remainder

original = [0, 1, 0, 0, 1, 1, 0, 0]
impulse_response = [2, 1]
recorded = scipy.signal.convolve(impulse_response, original)
print recorded
# [0 2 1 0 2 3 1 0 0]
recovered, remainder = scipy.signal.deconvolve(recorded, impulse_response)
print recovered, remainder
# [ 0.  1.  0.  0.  1.  1.  0.  0.] [ 0.  0.  0.  0.  0.  0.  0.  0.  0.]

不过,我不明白你想用 PMF 做什么,所以我不能举一个更具体的例子。