scipy.signal.deconvolve的除数参数有哪些约束来确保数值稳定性?

时间:2016-03-24 15:39:28

标签: python numpy scipy numerical-stability deconvolution

这是我的问题:我将处理来自系统的数据,我将对脉冲响应有一个很好的了解。之前使用Python进行一些基本脚本编写,我开始了解scipy.signal.convolve和scipy.signal.deconvolve函数。为了对我的最终解决方案有所信心,我想了解他们的要求和限制。

我使用了以下测试:
我建立了一个由两个高斯人组成的基本信号 我建立了高斯脉冲响应 我用这个脉冲响应将我的初始信号卷起来 我解卷积了这个卷积信号 我把这最后一个信号与我最初的信号进行了比较 这个测试的结果很大程度上取决于我如何定义我的脉冲响应:要么我设法恢复我的初始信号,要么解卷积信号强烈分歧。

这是代码:
我使用python 3.4.2,numpy 1.8.2和scipy 0.14.0。

import numpy as np  
from scipy import signal  


def gauss(x, amp = 1, mean = 0, sigma = 1):  
    return amp * np.exp(-(x - mean)**2 / (2 * sigma**2))  


step = 0.1  
x_os = np.arange(0, 200 + step, step)  
low = -5 # lower bound of the interval for the impulse response
up = 5  # upper bound of the interval for the impulse response
x_ir = np.arange(low, up + step, step)  

y_os1 = gauss(x_os, 160, 80, 5.0)  
y_os2 = gauss(x_os, 20, 20, 2.0)  
y_os = y_os1 + y_os2 # original signal  

y_ir = gauss(x_ir, 1 / (np.sqrt(2 * np.pi)), 0.0, 1.0) # impulse response 

y_c = signal.convolve(y_os, y_ir, 'full') # convoluted signal

y_d, _ = signal.deconvolve(y_c, y_ir) # deconvoluted signal

在前面的代码中,scipy.signal.deconvolve的除数参数是y_ir。我玩了定义定义y_ir的间隔的参数,例如, [低,向上,一步]。为了向您展示让我困​​惑的是,让我们采取以下三组:
1)[-5, 5, 0.1]
2)[-2, 2, 0.1]
3)和[-2, 2, 0.5](请注意,y_os的定义中没有更改步骤。)

以下图像显示原始信号以及上述三组的去卷积信号 Original signal
Comparison of the deconvoluted signals

任何人都可以解释这种行为吗? divisor是否有任何要求保证此功能的正常行为?

提前谢谢。

0 个答案:

没有答案