ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。このページの最新版は英語でご覧になれます。

再代入したスペクトログラムを使用したリッジの検出と追跡

オオクビワコウモリ ("Eptesicus fuscus") の発する反響定位パルスを 7 マイクロ秒間隔のサンプリングで測定したデータを含むファイルを読み込みます。信号と時間情報を使用して MATLAB® timetable を作成します。

loadbatsignalt = (0:length(batsignal)-1)*DT; sg = timetable(seconds(t)',batsignal);

信号アナライザーを開いて、ワークスペース ブラウザーから信号テーブルに timetable をドラッグします。[グリッドの表示]▼ をクリックして、2 つのディスプレイを並べて作成します。各ディスプレイを選択し、[時間-周波数]ボタンをクリックしてスペクトログラム表示を追加します。

両方のディスプレイに timetable をドラッグします。

[スペクトログラム]タブを選択します。右側のディスプレイの[再割り当て]をオンにします。各ディスプレイについて以下を行います。

  • 時間分解能を 280 マイクロ秒に設定し、隣接するセグメント間のオーバーラップとして 85% を指定します。

  • [漏れ]スライダーを使用して、RBW が約 4.5 kHz になるまで漏れを増やします。

  • パワーの範囲を -45 dB と -20 dB に設定します。

再割り当てされたスペクトログラムでは、3 つの時間-周波数リッジが明瞭に表示されます。リッジを追跡するために、右側のディスプレイを選択します。[表示]タブの[スクリプトの生成]をクリックして、Spectrogram Scriptを選択します。スクリプトがエディターで開きます。

% Compute spectrogram% Generated by MATLAB(R) 9.7 and Signal Processing Toolbox 8.2.% Generated on: 26-Dec-2018 17:21:44% ParameterstimeLimits = seconds([0 0.002793]);% secondsfrequencyLimits = [0 71428.57];% Hzleakage = 0.9; timeResolution = 0.00028;% secondsoverlapPercent = 85; reassignFlag = true;%%% Index into signal time region of interestsg_batsignal_ROI = sg(:,'batsignal'); sg_batsignal_ROI = sg_batsignal_ROI(timerange(timeLimits(1),timeLimits(2),'closed'),1);% Compute spectral estimate% Run the function call below without output arguments to plot the results[P,F,T] = pspectrum(sg_batsignal_ROI,...'spectrogram',...'FrequencyLimits',frequencyLimits,...'Leakage',leakage,...'TimeResolution'timeResolution,...'OverlapPercent',overlapPercent,...'Reassign',reassignFlag);

スクリプトを実行します。再割り当てされたスペクトログラムをプロットします。

mesh(seconds(T),F,P) xlabel('Time') ylabel('Frequency') axistightview(2) colormappink

リッジの追跡に関数tfridgeを使用します。

[fridge,~,lridge] = tfridge(P,F,0.01,'NumRidges',3,'NumFrequencyBins',10); holdonplot3(seconds(T),fridge,P(lridge),':','linewidth',3) holdoff

この例では、イリノイ大学の Curtis Condon 氏、Ken White 氏、Al Feng 氏にコウモリのデータの提供および使用許可をいただきました。ご協力に謝意を申し上げます。

参考

アプリ

関数

関連する例

詳細