我试图从单音,频率发出(音频)信号,这会随着时间而变化。
我的音调为1d numpy数组: freq = [100,102,103,100,115,113,...,430]
每个值对应于没有N(例如100)个样本。我知道如何确保它匹配每个模式(N = 1)。 (它可以在当时的时间里成长和下降)
现在我需要这个频率曲线'转换为正弦信号。
我知道scipy.signal.sweep_poly(和类似的)函数,但我不能将频率描述为多项。
拜托,请帮助我,如何从频率列表中生成信号?
非常感谢你!
答案 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