このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
複素チャープの瞬時周波数
この例では、フーリエ シンクロスクイーズド変換を使用して、信号の瞬時周波数を計算する方法を示します。
正弦関数的に変化する周波数成分をもつチャープを生成します。信号はホワイト ガウス ノイズに組み込まれ、3 kHz で 1 秒間サンプリングされます。
fs = 3000; t = 0:1/fs:1-1/fs; x = exp(2j*pi*100*cos(2*pi*2*t)) + randn(size(t))/100;
信号のフーリエ シンクロスクイーズド変換を計算し、プロットします。時間が x 軸に、周波数が y 軸に表示されます。
fsst(x,fs,'yaxis')
信号の瞬時周波数を求めるために、フーリエ シンクロスクイーズド変換の最大エネルギーの時間-周波数リッジを抽出します。
[sst,f,tfs] = fsst(x,fs); fridge = tfridge(sst,f);
リッジを変換プロットに重ね合わせます。時間をミリ秒に、周波数を kHz に変換します。
hold on plot(t*1000,fridge/1000,'r') hold off
実信号の場合、関数 instfreq
を使用して瞬時周波数をより簡単に検出できます。たとえば、解析信号を計算し、その位相を微分することで複素チャープの実数部の瞬時周波数を表示します。
ax = real(x); instfreq(ax,fs,'Method','hilbert')
参考
fsst
| ifsst
| instfreq
| pspectrum
| spectrogram
| tfridge