【发布时间】:2018-06-16 04:11:22
【问题描述】:
简介
我试图在我生成的频谱图中找到振幅峰值,该频谱图中将频率与时间和振幅作为第三轴进行绘制。
我查看并尝试使用scipy.signal.find_peaks_cwt 编写解决方案,但官方参考指南没有解释widths 参数的含义。
问题:
当使用scipy.signal.find_peaks_cwt 查找峰值时,它会返回频率-时间坐标吗?如果没有,是否有其他库或方法可用于返回局部最大值的坐标?
scipy.signal.find_peaks_cwt 中的widths 参数是什么?
scipy.signal.find_peaks_cwt 处理数组,为什么您仍然需要绘制频谱图才能找到局部最大值?
这是我用来创建频谱图的代码:
import numpy as np
import matplotlib.pyplot as plt
import scipy.io.wavfile
from scipy import signal
def create_spectrogram(audio):
rate, data = scipy.io.wavfile.read(audio)
data_1D = data.flatten()
plt.specgram(data_1D, NFFT = 64, Fs = 64, noverlap=32)
plt.savefig("melody")
plt.show()
if __name__ == '__main__':
audio = "melody.WAV"
create_spectrogram(audio)
这是输出的频谱图:
链接:
scipy.signal.find_peaks_cwt参考指南:https://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.signal.find_peaks_cwt.html
【问题讨论】:
-
请阅读如何创建minimal reproducible example 并通过编辑将缺少的信息添加到您的帖子中:) 如果您还没有阅读How to Ask,我建议您这样做:) 我强烈推荐遵循我链接的 2 个指南,因为当帖子遵循这些指南时,SO 上的人更有可能回答问题。我特别缺少的是 - 到目前为止你尝试了什么?您面临哪些错误/问题?您是否有 coden-ps 可以显示您到目前为止尝试过的内容?
-
find_peaks_cwt用于一维数组。如果您想在二维频谱图中找到局部峰值,请阅读以下内容:stackoverflow.com/questions/3684484/…
标签: python max spectrogram audio-fingerprinting