【问题标题】:Convolution & Deconvolution using Scipy使用 Scipy 进行卷积和反卷积
【发布时间】:2023-06-10 03:57:02
【问题描述】:

我正在尝试使用 Python 计算反卷积。我有一个信号让我们说 f(t),它是由窗口函数说 g(t) 卷积的。是否有一些直接的方法来计算反卷积,以便我可以取回原始信号?

例如 f(t) = exp(-t**2/3);高斯函数 和 g(t) = 梯形函数

提前感谢您的友好建议。

【问题讨论】:

    标签: python scipy signals convolution


    【解决方案1】:

    这是一个分析问题还是数值问题?

    如果是数字,使用 scipy.signal.devconvolve:http://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.deconvolve.html

    来自文档:

    >>> from scipy import signal
    >>> sig = np.array([0, 0, 0, 0, 0, 1, 1, 1, 1,])
    >>> filter = np.array([1,1,0])
    >>> res = signal.convolve(sig, filter)
    >>> signal.deconvolve(res, filter)
    (array([ 0.,  0.,  0.,  0.,  0.,  1.,  1.,  1.,  1.]),
     array([ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.]))
    

    否则,如果您想要分析解决方案,您可能使用了错误的工具。

    另外,只是对未来谷歌的提示,当你谈论卷积时,动作通常/经常是“卷积”而不是“卷积”,请参阅https://english.stackexchange.com/questions/64046/convolve-vs-convolute

    【讨论】:

    • @user3284855 这回答了您的问题吗?如果是这样,请通过单击复选标记标记为已回答。如果没有,可以做些什么来改善答案?什么不起作用?
    • 亲爱的琼再次感谢您的关注。我仍在寻找更准确的答案。我正在寻找输出结果作为输入信号变量函数的卷积。有没有办法计算一个函数的直接卷积,比如说 f(x) 和 g(x),卷积的就是 f'(x)?它适用于一个数组,但会给出另一个形状不同的数组的结果。结果如何表示为 x 的函数?再次感谢您(或任何其他专家)的建议。
    • 虽然deconvolve 有一个文档字符串,但它似乎仍然没有达到您的预期,例如Deconvolve(Convolve(f,g) , g) == f。我问了一个问题(*.com/questions/40615034/…),所以也许有人可以帮忙。
    最近更新 更多