首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Scipy.signal.spectrogram输出长度

Scipy.signal.spectrogram输出长度
EN

Stack Overflow用户
提问于 2018-04-07 17:08:50
回答 2查看 1.5K关注 0票数 0

我试着分析一首歌在数组中某个时刻的频率。

我使用scipy.signal.spectrogram函数来生成这些频率。歌曲的长度为2:44,或164秒,scipy.wavfile读取的采样率为44100。

当我使用谱图时:

代码语言:javascript
复制
f, t, Sxx= signal.spectrogram(data[:, 1], sr)

F的长度很小,129个元素。T是更长的,在32322,但仍然是一个很长的机会离开7240320采样窗口在原始的wavfile.read。

(数据:,1是音频数据的正确通道)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-10 12:11:50

F的长度( stft 256的默认nperseg )除以2(仅为频率标度的正侧)+1(频率0)。时间上的样本数是通过

代码语言:javascript
复制
t.size = len(data[:, 1]) / nperseg * (1 + noverlap) 

其中noverlap256/8=32

票数 1
EN

Stack Overflow用户

发布于 2019-09-08 12:10:43

频率阵列f被限制在nperseg的一半加上零频率,所以

代码语言:javascript
复制
f.size = int(1 + nperseg / 2)

虽然时间数组受段数的限制,但您可以根据nperseg和noverlap从数据数组中提取片段,如下所示

代码语言:javascript
复制
t.size = int(len(data[:, 1]) - noverlap) / (nperseg - noverlap))

如果您设想使用nperseg=8和noverlap=1有两个片段,您需要至少有15个样本的信号,这就更容易理解了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49709861

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档