我试图在我生成的频谱图中找到幅度峰值,该频谱图将时间和幅度作为第三轴绘制。
我已查看并尝试使用scipy.signal.find_peaks_cwt
对解决方案进行编码,但官方参考指南并未解释widths
参数的含义。
使用scipy.signal.find_peaks_cwt
查找峰值时,它会返回频率 - 时间坐标吗?如果没有,是否有另一个库或方法用于返回局部最大值的坐标?
widths
中的scipy.signal.find_peaks_cwt
参数是什么?
由于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
答案 0 :(得分:0)
请您提供更多信息,了解您的数据在您的代码中的确切存储方式?它是一个numpy数组,scipy.signal.spectrogram或简单的python列表?一段代码可以帮助您找到一个好的解决方案。
目前唯一的" easy"我建议的方法是看看numpy.amax(),明智地选择轴参数的值,可以得到你想要的最大值。