简体   繁体   中英

The amplitude is changing when using Numpy Convolve

How can I make the amplitude of the convolution between the following square shape and gaussian unity?

L = 5
x = 1
t_total = L+2*x
tlist = np.linspace(0,t_total,100)

# Square pulse of length L and unit amplitude centered at x+L/2
A = (heaviside(tlist - x, 0) - heaviside(tlist - (L+x), 0))

# Gaussian with mean (x+L/2) and std 1
f = np.exp(-pow(tlist-(x+L/2),2)/2)
figure(1)
plt.plot(tlist, A)
plt.plot(tlist, f)

# Convolution
g = np.convolve(A, f, mode = 'same') * dt
figure(2)
plt.plot(tlist, g, 'g')

figure(1) 在此处输入图片说明

figure(2) 在此处输入图片说明

As you can see, in figure(2) the amplitude is approx 4.4. I would like to have it unity. How can I achieve that?

If you want the convolution of your two signals to be scaled to your gaussian function, you need to normalize. The easiest way of doing this is dividing by the sum of f:

g = np.convolve(A, f, mode = 'same') * dt / np.sum(f)

The plot yields an amplitude of 1 as requested, given that dt is also 1. Generally speaking, the amplitude will be exactly dt .

dt=1 的卷积结果

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM