
[code]

    from pylab import *
    #略
    pxx, freqs, bins, im = specgram(data, NFFT=N, Fs=wf.getframerate(), noverlap=0, window=hammingWindow)
    axis([0, length, 0, wf.getframerate() / 2])
    show()
    
[/code]

みたいなコードでスペクトログラムが画像で出せるのですが、これを数値データでファイルに書き出して欲しい場合はどうすればいいのでしょうか？


CC BY-SA 3.0
2016-03-17T08:19:51.567
23218
2016-03-17T12:21:01.213
525
question
python
pylabで描画できるスペクトログラムをデータで出力したい。


`pxx`にスペクトログラム、`freqs`に周波数の刻み、`bins`に時刻の刻みが入っているので、それらを使いやすい形式でファイルに保存すればいいと思います。  
これらをプロットするには以下のようにします`np=numpy`, `plt=matplotlib.pyplot`

[code]

    W, T = np.meshgrid(bins, freq)
    plt.pcolormesh(W, T, pxx)
    
[/code]

この`specgram`は[matplotlib.pyplot.specgram](http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.specgram)だと思いますが、そもそもこれは図に表示するためのものなので計算するだけなら[scipy.signal.spectrogram](http://scipy.github.io/devdocs/generated/scipy.signal.spectrogram.html)の方適しているかもしれません。こちらはサンプルにあるとおり、

[code]

    f, t, Sxx = signal.spectrogram(x, fs)
    plt.pcolormesh(t, f, Sxx)
    
[/code]

で表示できるようです。


CC BY-SA 3.0
2016-03-17T12:21:01.213
23225
2016-03-17T12:21:01.213
9572
23218
answer