この質問にはすでに答えがあります。
私は作成したスペクトログラムの中で振幅のピークを見つけようとしています。それは時間と振幅に対する周波数を3番目の軸としてプロットしています。
私は見て、を使用してソリューションをコーディングしようとしました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
データがコードにどの程度正確に格納されているかについて、もう少し詳しく教えてください。それはでたらめな配列、scipy.signal.spectrogram、あるいは単純なPythonリストなのでしょうか。コードの断片は、良い解決策を見つける手助けをするのに非常に役立ちます。
今のところ私が提案するであろう唯一の "簡単な"方法は見てみることですnumpy.amax()軸パラメータに与えられた値を賢く選ぶと、あなたが探している最大値を得るでしょう。
find_peaks_cwt
1次元配列用です。あなたの2-Dスペクトログラムで局所的なピークを見つけたいならば、これを読んでください:stackoverflow.com/questions/3684484/… - Gerges Dib