这个复杂信号的伪影的原因是什么?

What is the cause of the artifacts of this convoluted signal?

我试图找出卷积后出现伪影的原因,它们可以在 x = -.0016 和 x= .0021 附近的图中看到(请参阅下面的代码)。我正在对我在代码中定义的 "lorentzian" 函数(或 langevin 函数的导数)进行卷积,函数 "ditrib".
中有 2 个 Dirac 脉冲 我将不胜感激你的帮助。 谢谢 这是我的代码:

    import numpy as np
    import matplotlib.pyplot as plt

    def Lorentzian(xx):
        if not hasattr(xx, '__iter__'):
            xx = [ xx ]
        res = np.zeros(len(xx))
        for i in range(len(xx)):
            x = xx[i]
            if np.fabs(x) < 0.1:
                res[i] =  1./3. - x**2/15. + 2.* x**4 / 189. - x**6/675. + 2.* x**8 / 10395. - 1382. * x**10 / 58046625. + 4. * x**12 / 1403325.
            else:
                res[i] = (1./x**2 - 1./np.sinh(x)**2)
        return res


    amp = 18e-3 
    a = 1/.61e3
    b = 5.5
    t_min = 0 
    dt = 1/5e6
    t_max = (10772) * dt
    t = np.arange(t_min,t_max,dt)
    x_min = -amp/b
    x_max = amp/b
    dx =  dt*(x_min-x_max)/(t_min-t_max)
    x = np.arange(x_min,x_max,dx)

    func1 = lambda x : Lorentzian(b*(x/a))

    def distrib(x):
        res = np.zeros(np.size(x))
        res[int(np.floor(np.size(x)/3))] = 1
        res[int(3*np.floor(np.size(x)/4))] = 3
        return res
    func2 = lambda x,xs : np.convolve(distrib(x), func1(xs), 'same')

    plt.plot(x, func2(x,x))
    plt.xlabel('x (m)')
    plt.ylabel('normalized signal')

尝试删除 func1

的 "pedestal"
func1(x)[0], func1(x)[-1]
Out[7]: (0.0082945964013920719, 0.008297677313152443)

减去

func2 = lambda x,xs : np.convolve(distrib(x), func1(xs)-func1(x)[0], 'same')

给出平滑的卷积曲线

根据您想要的结果,您可能必须在之后将其添加回去,由狄拉克总和加权