私は与えられた私の時間領域信号のスペクトログラムをプロットしようとしています:
N=5000;
phi = (Rand(1,N)-0.5)*pi;
a = tan((0.5.*phi));
i = 2.*a./(1-a.^2);
plot(i);
spectrogram(i,100,1,100,1e3);
問題は、パラメーターがわからないことと、どのような値を指定する必要があるかです。私が使用しているこれらの値は、MATLABのspectrogram
のオンラインドキュメントを参照しました。私はMATLABを使い始めたばかりですが、アイデアを思いついていません。どんな助けでも大歓迎です!
そのMATLABコマンドが何をするかを実際に説明する前に、スペクトログラムとは何かを知りたいと思います。そうすることで、各パラメーターがどのように機能するかについてより多くの意味を得ることができます。
スペクトログラムは Short-Time Fourier Transform を視覚的に表現したものです。これは、入力信号のチャンクを取得し、各チャンクにローカルフーリエ変換を適用すると考えることができます。各チャンクには指定された幅があり、このチャンクにフーリエ変換を適用します。各チャンクには頻度分布が関連付けられていることに注意してください。時間信号の特定の時点を中心とする各チャンクについて、一連の周波数成分を取得します。これらのすべての周波数成分を各チャンクで収集し、まとめてプロットしたものが、本質的にスペクトログラムです。
スペクトログラムは2D視覚ヒートマップで、横軸は信号の時間を表し、縦軸は周波数軸を表します。視覚化されているのは、暗い色は特定の時点と特定の周波数について、周波数成分の大きさが低いほど、色が暗いことを意味します。同様に、周波数成分が大きければ大きいほど、色は明るくなります。
スペクトログラムの完璧な例を1つ示します。
出典: Wikipedia
したがって、各時点で、周波数成分の分布がわかります。各列は、この時点を中心とするチャンクの周波数分解と考えてください。列ごとに、さまざまな色のスペクトルが表示されます。色が濃いほど、その周波数での振幅成分は低くなり、その逆も同様です。
これで準備が整いました。関数とそのパラメーターの点でMATLABがどのように機能するかを見てみましょう。あなたが呼び出す方法 spectrogram
は、このバージョンの関数に準拠しています。
_spectrogram(x,window,noverlap,nfft,fs)
_
各パラメータを1つずつ見ていき、各パラメータの機能をより深く理解できるようにします。
x
-これは、スペクトログラムを見つけたい入力時間領域信号です。それよりもずっと単純にすることはできません。あなたの場合、スペクトログラムを見つけたい信号は次のコードで定義されています:
_N=5000;
phi = (Rand(1,N)-0.5)*pi;
a = tan((0.5.*phi));
i = 2.*a./(1-a.^2);
_
ここで、i
は、スペクトログラムを検索する信号です。
window
-思い出してください。画像はチャンクに分解され、各チャンクには指定された幅があります。 window
は、各チャンクの幅をsamplesで定義します。これは離散時間信号なので、この信号は特定のサンプリング周波数とサンプリング周期でサンプリングされたことがわかります。次の方法で、サンプルの観点からウィンドウの大きさを判断できます。
_window_samples = window_time/Ts
_
Ts
は、信号のサンプリング時間です。ウィンドウサイズの設定は実際には非常に経験的であり、多くの実験が必要です。基本的に、ウィンドウサイズが大きいほど、より多くの周波数をキャプチャするので周波数分解能が向上しますが、時間のローカライズは不十分です。同様に、ウィンドウサイズが小さいほど、ローカリゼーションの時間は短縮されますが、それほど大きな周波数分解は得られません。ここでは、最適なサイズについての提案はありません...時間-周波数分解に関しては wavelets が推奨されるのはそのためです。各「チャンク」について、チャンクは動的な幅の小さなチャンクに分解されるため、適切な時間と周波数のローカリゼーションが混在しています。
noverlap
-周波数のローカリゼーションを確実にする別の方法は、チャンクがoverlappingであることです。適切なスペクトログラムは、各チャンクが各チャンクで重複する特定の数のサンプルを持つことを保証し、noverlap
は各ウィンドウで重複するサンプルの数を定義します。デフォルトは、各チャンクの幅の50%です。
nfft
-基本的に、各チャンクのFFTを取得しています。 nfft
は、チャンクごとに計算するFFTポイントの数を示します。デフォルトのポイント数は、256またはfloor(log2(N))
の最大値です。ここで、N
は信号の長さです。 nfft
は、周波数分解能がどの程度細かくなるかについての尺度も示します。 FFTポイントの数が多いほど、周波数分解能が高くなり、可視化すると、スペクトログラムの周波数軸に沿って細かい詳細が表示されます。
fs
-信号のサンプリング周波数。デフォルトは1 Hzですが、信号のサンプリング周波数に変更できます。
したがって、おそらくこれから取り出すべきことは、パラメーターの設定方法を実際に伝えることはできないということです。それはすべてあなたが持っている信号に依存しますが、うまくいけば、上記の説明がhowのパラメータ設定のより良いアイデアを与えるでしょう。
幸運を!