ウェーブレット時間-周波数アナライザー アプリの使用
この例では、ウェーブレット時間-周波数アナライザーアプリを使用して 1 次元信号のスカログラムを可視化する方法を示します。スカログラムは、連続ウェーブレット変換 (CWT) の絶対値です。CWT で使用するウェーブレット パラメーター、オクターブあたりの音の数、周波数範囲を調整できます。複数のスカログラムを比較し、スカログラムをワークスペースにエクスポートできます。MATLAB® スクリプトを生成し、ワークスペースでスカログラムを再作成することもできます。
データのインポート
wecg 信号を MATLAB ワークスペースに読み込みます。サンプリング周波数は 180 Hz です。
load wecg
Fs = 180;スカログラムの可視化
"ウェーブレット時間-周波数アナライザー" を開きます。[アナライザー] タブで、[信号のインポート] をクリックします。アプリが処理できるすべてのワークスペース変数のリストを含むウィンドウが表示されます。wecg 信号を選択し、[インポート] をクリックします。簡単な 1 回限りの初期化の後、インポートされた信号の名前とタイプが [信号] ペインに表示されます。アプリによって、[Scalogram-wecg] プロットにスカログラムが表示されます。アプリは、解析モース (3, 60) ウェーブレットと既定の設定のcwt関数を使用して、スカログラムを生成します。円錐状影響圏は、"エッジ効果の副作用" による影響を受ける可能性があるスカログラムの領域を示します。白い破線の外側の網掛け部分は、エッジの影響を受けている可能性があるため、疑わしいものとして扱う必要があります。円錐状影響圏の詳細については、境界効果と円錐状影響圏を参照してください。
[基本設定] ▼ メニューのオプションを設定することで、円錐状影響圏の境界線を非表示/表示したり、境界領域に陰影を付けたりできます。信号が複素数値の場合、正 (反時計回り) と負 (時計回り) の成分を個別のスカログラムとして表示することも、連結されたスカログラムとして表示することもできます。[基本設定] ▼ メニューで選択したオプションは、MATLAB セッション間で保持されます。
既定では、信号は timetable ではないため、アプリはサイクル/サンプル単位で周波数をプロットし、サンプル インデックスを時間軸の基底として使用します。インポートされた信号が timetable の場合、アプリはスカログラムを周波数の関数としてヘルツ単位でプロットし、timetable の行時間を時間軸の基底として使用します。
[アナライザー] タブで、[サンプル レート] ラジオ ボタンを選択します。スカログラムの軸ラベルは、既定のサンプル レート 1 Hz を使用して更新されます。wecg 信号に対して軸ラベルを適切に設定するには、[サンプル レート] フィールドに値 180 を適用します。timetable のサンプル レートを変更することはできません。

ウェーブレット パラメーターの変更
スカログラムの作成に使用される CWT パラメーターにアクセスするには、[スカログラム] タブをクリックします。パラメーターは、cwt関数の入力引数に対応します。パラメーター設定は既定値です。サンプル レートを設定するため、周波数範囲の最小値と最大値はヘルツ単位になります。既定の周波数範囲は、ウェーブレット、信号長、サンプル レート、およびオクターブあたりの音の数によって異なります。詳細については、cwtfreqboundsを参照してください。

Morse (40,60) ウェーブレットを使用してスカログラムを取得するには、まず、[対称性] テキスト ボックスの Morse 対称性パラメーターを 40 に変更します。次に、新しい値を入力するには、キーボードの "Enter キー" を押すか、テキスト ボックス外側の任意の場所をマウスでクリックします。
[スカログラムの計算] ボタンが有効になります。
ウェーブレットを変更したため、周波数範囲が更新されます。
ステータス バーに、保留中の変更があることを示すテキストが表示されます。
[パラメーターをリセット] をクリックすると、いつでも CWT パラメーターを既定値にリセットできます。パラメーターをリセットすると、[スカログラムの計算] ボタンが有効になります。
メモ: 無効な設定を防ぐために、変更されたすべてのパラメーターがアプリによって直ちに検証されます。無効な値が入力されている場合、アプリによって自動的に有効な値に置き換えられます。アプリは次の値を無効として扱います。
非常に低い最小周波数値
Morse ウェーブレット パラメーターが満たさなければならない制約に違反する時間-帯域積の値
新しい値は、目的の値ではない可能性があります。予期しない結果を避けるために、入力したすべての値が必ず有効な設定になるようにする必要があります。詳細については、Morse ウェーブレット パラメーターの調整の例を参照してください。

変更を適用して新しいスカログラムを可視化するには、[スカログラムの計算] をクリックします。

スカログラムの比較
現在のスカログラムと Bump ウェーブレットを使用して取得したスカログラムを比較するには、まず [アナライザー] タブの [複製] ボタンをクリックします。2 番目の信号 wecgCopy が [信号] ペインに表示されます。複製のスカログラムは、[Scalogram-wecgCopy] プロットに表示されます。次に、[スカログラム] タブで、[ウェーブレット] ドロップダウン メニューから bump を選択します。Morse ウェーブレット パラメーターが無効になり、周波数範囲が更新されていることを確認します。Bump ウェーブレットを使用してスカログラムを作成するには、[スカログラムの計算] をクリックします。最初のスカログラムと比較するには、[信号] ペインで wecg を選択します。

結果のエクスポート
選択した信号の CWT を含む構造体配列をワークスペースにエクスポートできます。MATLAB® スクリプトを生成し、ワークスペースでスカログラムを再作成することもできます。
構造体のエクスポート
wecgCopy の CWT をエクスポートするには、[信号] ペインでその信号を選択します。次に、[エクスポート] ▼ メニューから Export Scalogram を選択して、ワークスペースに構造体配列 wecgCopy_scalogram を作成します。構造体配列には、次の 3 つのフィールドがあります。
coefficients— CWT 係数frequencyVector— スケールから周波数への変換timeVector— 時間ベクトル
次のコマンドを実行すると、このフィールドの値を使用して新しい Figure にスカログラムを可視化できます。
figure pcolor(wecgCopy_scalogram.timeVector, ... wecgCopy_scalogram.frequencyVector, ... abs(wecgCopy_scalogram.coefficients)) shading flat set(gca,"yscale","log") title("Scalogram") xlabel("Time (s)") ylabel("Frequency (Hz)")
スクリプトの生成
ワークスペースで wecg 信号のスカログラムを再作成するスクリプトを生成するには、[信号] ペインで wecg 信号を選択します。次に、[エクスポート] ▼ メニューから Generate MATLAB Script を選択します。アプリは、[信号] ペインで選択した信号の名前を使用してスクリプトを生成します。次の実行可能コードを含む無題のスクリプトが MATLAB エディターで開きます。
%Parameters sampleRate = 180; waveletParameters = [40,60]; %Compute time vector t = 0:1/sampleRate:(length(wecg)*1/sampleRate)-1/sampleRate; %Compute CWT %If necessary, substitute workspace variable name for wecg as first input to cwt() function in code below %Run the function call below without output arguments to plot the results [waveletTransform,frequency] = cwt(wecg, sampleRate,... WaveletParameters = waveletParameters); scalogram = abs(waveletTransform);
スクリプトを保存して実行します。ワークスペース変数 scalogram、t、および frequency を使用して、scalogram を可視化できます。
subplot(2,1,1) pcolor(t,frequency,scalogram) shading flat set(gca,"yscale","log") title("Scalogram") ylabel("Frequency (Hz)") xlabel("Time (s)") subplot(2,1,2) plot(t,wecg) axis tight title("Signal") xlabel("Time (s)")

参考
アプリ
関数
cwt|icwt|cwtfilterbank|cwtfreqbounds