在python中发出信号的频率列表

时间:2017-12-05 23:28:29

标签: python numpy scipy signals

我试图从单音,频率发出(音频)信号,这会随着时间而变化。

我的音调为1d numpy数组: freq = [100,102,103,100,115,113,...,430]

每个值对应于没有N(例如100)个样本。我知道如何确保它匹配每个模式(N = 1)。 (它可以在当时的时间里成长和下降)

现在我需要这个频率曲线'转换为正弦信号。

我知道scipy.signal.sweep_poly(和类似的)函数,但我不能将频率描述为多项。

拜托,请帮助我,如何从频率列表中生成信号?

非常感谢你!

1 个答案:

答案 0 :(得分:0)

不确定我100%理解你想要的但是如何:

freqs = np.random.uniform(100, 400, (20,))
times = np.cumsum(np.random.uniform(0.01, 0.02, (20,)))
# or np.arange(20) / sample_freq if evenly sampled
grid, dt = np.linspace(0, times[-1], 10000, retstep=True)
signal = np.sin(2*np.pi*dt*np.cumsum(np.interp(grid, times, freqs))) 

这在采样时间点之间使用线性插值。 scipy.interpolate

中提供了其他方法