3

この機能がスペックグラムを介して組み込まれているのではないかと思っていましたが、そうではないと思います。そうでない場合は、specgramまたはmatplotlibを使用してこれを実装するための最良の方法。スペックグラム軸の変換によってこの機能が有効になる場合。

たとえば、スペックグラムプロットでは、以下は機能しません(スペックグラムの最初の引数として任意のオーディオ信号を渡すことができます)。

fig = figure(11)
ax = fig.add_subplot(111)
ax.specgram(tidig.train_symbol_list[0].audio,Fs=12000)
ax.set_yscale('log')
4

1 に答える 1

1

Axes.set_xscale関数および関数を使用して、軸のスケーリングを変更できます。Axes.set_yscaleどちらもlinearlogまたはsymlogを入力として受け入れます。したがって、プロットを対数スケールの x 軸に変更するには、次のようにします。

import matplotlib.pyplot as plt

ha = plt.subplot(111)

# Plot your spectrogram here...

ha.set_xscale('log')

編集これは既知の問題のようです。これを行うために使用できるコマンドがありますが、特に便利な方法ではありません (関数へのフラグであるspecgramか、機能する必要がset_xscaleありset_yscaleます)。ただし、これを行う方法があります。

matplotlib.pyplot.specgramuseを使用する代わりにmatplotlib.mlab.specgram. これはスペクトログラムを計算しますが、描画はしません。その後、 または同様の関数を使用matplotlib.pyplot.pcolorして、スペクトログラムをプロットできます。だから、次のようなものを試してください:

import matplotlib.pyplot as plt
import matplotlib.mlab as mlab

# Set up your data here...

Pxx, freq, t = mlab.specgram(x) # Other options, such as NFFT, may be passed
                                # to `specgram` here.

ha = plt.subplot(111)
ha.pcolor(t, freq, Pxx)
ha.set_xscale('log')
于 2012-05-30T08:29:33.377 に答える