numpy
您可以使用例如: Python 模块生成信号。你可以将你的冲动添加到这个信号中(当然,如果尺寸正确的话)。我已经为您编写了一个示例,我在其中生成了一个 Sinus 信号,并在您的问题中numpy
添加了类似的脉冲。signal.unit_impulse()
为了更好地理解,我在代码中添加了几条注释。
代码:
import numpy as np
import matplotlib.pyplot as plt
import scipy.signal as signal
positive_impulses = signal.unit_impulse(200, [10, 50, 60]) # Generate positive impulses
negative_impulses = signal.unit_impulse(200, [80, 100, 150])*-1 # Generate negative impulses
# Generate the Sinus signal.
t = np.linspace(1, 200, 200)
x_sin_sig = np.sin(t / (2 * np.pi))
plt.subplot(4, 1, 1)
plt.plot(t, x_sin_sig)
plt.title("Signal")
plt.ylabel("Sin")
plt.subplot(4, 1, 2)
plt.plot(t, x_sin_sig + positive_impulses) # Add the positive impulses to the original signal
plt.title("Signal with positive impulses")
plt.subplot(4, 1, 3)
plt.plot(t, x_sin_sig + negative_impulses) # Add the negative impulses to the original signal
plt.title("Signal with negative impulses")
plt.subplot(4, 1, 4)
plt.plot(t, x_sin_sig + positive_impulses + negative_impulses) # Add the both impulses to the original signal
plt.title("Signal with different impulses")
plt.tight_layout()
plt.show()
输出:

笔记:
为您的信号生成随机脉冲可能更有效。您可以使用random
模块来完成。
import random
positive_impulses = signal.unit_impulse(200, random.sample(range(200), 5)) # Generate positive impulses
negative_impulses = signal.unit_impulse(200, random.sample(range(200), 5))*-1 # Generate negative impulses
将random.sample(range(200), 5)
返回从 0 到 200 范围内选择的 5 个数字的列表,没有重复。
随机脉冲的示例:
