2017-01-21 5 views
3

scipy.signal.spectrogramを呼び出した後、特定のセグメントの異なる周波数の強さを判断できますか?signal.spectrogram特定のセグメントの最大周波数を見つける

すなわち下記実行後:thisようなスペクトログラムを生成

fs, data = wavfile.read(waveFile)  

sampleFreqs, segmentTimes, sxx= signal.spectrogram(data, fs, nperseg=256, noverlap=128, nfft=512, window=('hamming')) 

fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12,4))  
ax1.pcolormesh((len(segmentTimes)*segmentTimes/segmentTimes[-1]), sampleFreqs, 10*np.log10(sxx)) 
ax1.set_title('Spectrogram'); 
ax1.set_xlabel('Segment') 
ax1.set_ylabel('Frequency') 

sxxから、10番目のセグメントで最も強い頻度はどのようなものですか?

乾杯、 デビッド

答えて

2

numpy.argmaxを見てください。あなたのデータはきれいに見えるので、動作するはずです。フィルタリングは必要ありません。

+0

ありがとうございました。私はsxxの形状がスペクトログラムと一致するように(segmentTimes、sampleFreqs)と期待していましたが、実際には(sampleFreqs、segmentTimes)でした。今私はこれが私が期待した値を決定できることを実感します。 –

関連する問題