Scipy信号分析图输出长度

2024-04-26 08:11:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着分析一首歌在某个特定时间点的频率。在

我正在使用化学信号谱图产生这些频率。歌曲的长度是2:44,即164秒,并且scipy.wav文件读数是44100。在

当我使用光谱图时:

f, t, Sxx= signal.spectrogram(data[:, 1], sr)

f的长度很小,有129个元素。t变长了,为32322,但与原来的7240320采样窗口相比,还有很长的距离wavfile.read文件. 在

(data[:,1]是音频数据的右声道)


Tags: 文件datasignal信号时间光谱scipy歌曲
2条回答

频率阵列f受采样频率加上零频率的一半的限制,因此

f.size = int(1 + sampling_frequency / 2)

而时间数组受到基于nperseg和noverlap的数据数组提取段数量的限制,如下所示

^{pr2}$

如果你想象有两个nperseg=8和noverlap=1的段,你需要一个至少有15个样本的信号,这就更容易理解了。在

f的长度stft256的默认nperseg除以2(仅频率刻度的正边)+1(频率0)。 通过以下方法获得及时的样本数量

t.size = len(data[:, 1]) / nperseg * (1 + noverlap) 

其中noverlap256/8=32。在

相关问题 更多 >