在python中创建不规则的锯齿函数

时间:2018-09-19 11:56:05

标签: python time-series

我有一个有趣的练习,我无法弄清楚。这是练习:

  

现在从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) 

这将导致以下结果:

Sawtooth function

我试图弄清楚如何使波长不规则,但仍然让时间序列以零结尾。有人有主意吗?

谢谢

1 个答案:

答案 0 :(得分:1)

您可以用np.linspacerandom.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()

输出看起来像这样: enter image description here