パーシステンス スペクトルを使用した干渉の検出
広帯域信号に組み込まれた狭帯域の干渉信号を可視化します。
1 kHz で 500 秒間サンプリングされたチャープを生成します。チャープの周波数は、測定中に 180 Hz から 220 Hz に増加します。
fs = 1000; t = (0:1/fs:500)'; x = chirp(t,180,t(end),220) + 0.15*randn(size(t));
この信号には 210 Hz の正弦波も含まれます。正弦波の振幅は 0.05 で、正弦波は信号の全持続時間の 1/6 の時間のみ存在します。
idx = floor(length(x)/6); x(1:idx) = x(1:idx) + 0.05*cos(2*pi*t(1:idx)*210);
信号を MATLAB® の timetable として保存します。
S = timetable(seconds(t),x);
信号アナライザーを開いて、ワークスペース ブラウザーからディスプレイに timetable をドラッグします。[時間-周波数] ボタンをクリックして、スペクトログラム表示を追加します。[スペクトログラム] タブの [時間分解能] で [指定] を選択して、1 秒の時間分解能を入力します。[周波数範囲] を 100 Hz ~ 290 Hz に設定します。両方の信号成分が表示されます。
[表示] タブに戻ります。[時間] ボタンをクリックして時間表示を削除し、[スペクトル] ボタンをクリックしてパワー スペクトル表示を追加します。周波数範囲は引き続き 100 Hz ~ 290 Hz にします。弱い正弦波はチャープによって不明瞭になります。
[スペクトル] ボタンの下にある矢印をクリックして Spectrum
表示を Persistence Spectrum
表示に変更します。[パーシステンス スペクトル] タブの [時間分解能] で [指定] を選択して、1 秒の時間分解能を入力します。隣接するセグメント間に 0 のオーバーラップを指定します。[パワーの範囲] に -50 dB と 0 dB、[密度の範囲] に 0.1 と 4 を設定します。今度は、両方の信号成分が明瞭に表示されます。
[表示] タブの [共有] の下で [スクリプトの生成] をクリックして、Persistence Spectrum Script
を選択します。スクリプトが MATLAB エディターで開きます。
% Compute persistence spectrum % Generated by MATLAB(R) 9.7 and Signal Processing Toolbox 8.2. % Generated on: 26-Dec-2018 16:07:45 % Parameters timeLimits = seconds([0 500]); % seconds frequencyLimits = [100 290]; % Hz timeResolution = 1; % seconds overlapPercent = 0; %% % Index into signal time region of interest S_x_ROI = S(:,'x'); S_x_ROI = S_x_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,PWR] = pspectrum(S_x_ROI, ... 'persistence', ... 'FrequencyLimits',frequencyLimits, ... 'TimeResolution',timeResolution, ... 'OverlapPercent',overlapPercent);
参考
アプリ
関数
関連する例
- 相関する信号間の遅延の検出
- ウィンドウの漏れを変化させることでトーンを分解する
- 異なるウィンドウを使用した信号スペクトルの計算
- 複素包絡線を使用した変調と復調
- 再代入したスペクトログラムを使用したリッジの検出と追跡
- 音楽信号からの音声の抽出
- 不等間隔サンプル信号のリサンプリングおよびフィルター処理
- 独自の関数を使用した飽和信号のクリップ除去
- 振動信号の包絡線スペクトルの計算
- クジラの歌からの関心領域の抽出