我有一个有趣的练习,我无法弄清楚。这是练习:
现在从1 Myr的时间序列开始,这是平均波长为0.1 Myr的锯齿。波的长度随机变化±0.02 Myr(介于80至120 kyrs之间),再次振幅1。
因此,我必须创建一个锯齿函数的时间序列,该序列的时间长为1000 kyrs,时间步长为1 kyr。锯齿的波长必须是随机的,平均为100 kyr,且变化范围为80 kyr至120 kyr。我希望时间序列从零开始,在零结束,因此不要在锯齿期间中途停止。现在我正在使用这个:
time = np.arange(0,1000,1)
func = scipy.signal.sawtooth(2 * np.pi* 0.01 * time-np.pi)
这将导致以下结果:
我试图弄清楚如何使波长不规则,但仍然让时间序列以零结尾。有人有主意吗?
谢谢
答案 0 :(得分:1)
您可以用np.linspace
和random.randrange
创建的concatenate波具有不同的波长:
import numpy as np
from scipy import signal
import matplotlib.pyplot as plt
import random
waveform = np.concatenate(
[signal.sawtooth(2 * np.pi * np.linspace(0, 1, random.randrange(30, 150))) for _ in range(10)]
)
plt.plot(waveform)
plt.show()