Main Content

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

信号多重解像度アナライザー

時間を揃えた成分に信号を分解

説明

信号多重解像度アナライザーアプリは、実数値の 1 次元信号の多重レベル ウェーブレットと経験的モード分解を可視化して結果を比較するための対話型ツールです。このアプリでは、以下を行うことができます。

  • MATLAB® ワークスペース内のすべての信号にアクセスする。

  • modwt メソッドと modwtmra メソッド (既定) または emd メソッドを使用して、既定パラメーターを調整し、複数の分解を生成する。

  • 信号の再構成に含める分解レベルを選択する。

  • 結果を可視化して比較する。

  • 分解レベルの周波数範囲を取得する (詳細については powerbw を参照)。

  • 複数のレベルにおける信号の相対エネルギーを特定する。

  • 再構成した信号と分解をワークスペースにエクスポートする。

  • MATLAB スクリプトを生成することにより、ワークスペースで分解を再作成する。

信号多重解像度アナライザー アプリを開く

  • MATLAB ツールストリップ: [アプリ] タブの [信号処理と通信][信号多重解像度アナライザー] をクリックします。

  • MATLAB コマンド プロンプト: signalMultiresolutionAnalyzer と入力します。

すべて展開する

阪神淡路大震災のデータを読み込みます。このデータは、オーストラリアのホバートにあるタスマニア大学の地震計で 1995 年 1 月 16 日 20:56:51 (GMT) から 51 分間にわたって 1 秒間隔で記録された測定値 (垂直加速度、nm/sec2) です。

load kobe

信号多重解像度アナライザーを開き、[信号の読み込み] をクリックします。アプリで処理できるすべてのワークスペース変数をリストしたウィンドウが表示されます。

ダイアログ ボックスから阪神淡路大震災のデータを選択して、[OK] をクリックします。信号の 4 レベルの MODWTMRA 分解が表示されます。[分解された信号] ペインでは、分解された信号に kobe1 という名前が付けられます。接尾辞 [modwtmra] は、分解がウェーブレットに基づくことを示します。既定では、プロットはサンプル インデックスに対して行われ、周波数の単位はサンプルあたりのサイクル数です。[サンプルレート] ラジオ ボタンを選択します。データのサンプルレートは 1 Hz なので、既定値を変更する必要はありません。プロットと周波数が、このサンプルレートを使用するよう更新されます。

中央の [分解] ペインのプロットは、元の信号部分空間の各スケールにおける信号のウェーブレット分解の投影です。元の信号 kobe と再構成 kobe1 は、[再構成] ペインにプロットされます。[レベルの選択] ペインには、各スケールにおける信号の相対エネルギーと周波数帯域が表示されます。

[表示] 列のチェック ボックスは、そのレベルを [分解] ペインに表示するかどうかを制御します。[含める] 列のチェック ボックスは、そのレベルのウェーブレット分解を再構成に含めるかどうかを制御します。[分解] ペインのプロットをクリックすることによっても、信号の再構成でそのレベルを含めるか除外するかを制御できます。新しいウェーブレット分解を生成するには、いずれかのウェーブレット パラメーターをツールストリップで変更して [分解] をクリックします。

  • ウェーブレット - ウェーブレット ファミリ

  • 数値 - ウェーブレット フィルターの番号

  • レベル - ウェーブレット分解のレベル

ツールストリップの設定を変更すると、[分解] ボタンが有効になります。

ノイズがある Doppler 信号を読み込みます。この信号は、Donoho および Johnstone の Doppler テスト信号 [1] にノイズを加えたものです。

load noisdopp

信号多重解像度アナライザーを開き、信号をアプリに読み込みます。既定では、信号の 4 レベルの MODWTMRA 分解が作成されます。[分解された信号] ペインでは、ウェーブレット分解に noisdopp1 という名前が付けられます。[再構成] ペインに、元の信号と再構成された信号が異なる 2 色でプロットされます。

EMD 分解を追加するため、[追加] ▼ をクリックして [EMD] を選択します。

少し待つと、EMD 分解 noisdopp2 がアプリに表示されます。[分解された信号] で EMD 分解を選択したので、EMD に関連するオプションを表示するようにツールストリップが変化し、残差が [再構成] ペインで最も太いプロットになります。

2 つの再構成の違いを調べやすくするため、プロットの凡例の noisdopp をクリックします。テキストが薄くなり、元の信号のプロットが非表示になります。凡例を使用すると、[再構成] ペインの任意のプロットを非表示にすることができます。

ツールストリップのパラメーターを変更すると、異なる EMD 分解を生成できます。

  • 内挿 - 包絡線構築のための内挿法

  • ふるい分けの相対許容誤差 - コーシー型収束基準

  • ふるい分けの最大反復回数 — ふるい分け反復の最大回数

  • IMF の最大数 - 抽出する IMF の最大数

  • 極値の最大数 - 残差信号の極値の最大数

  • 最大エネルギー比 - 信号と残差のエネルギー比

パラメーターの詳細については、emdを参照してください。

この例では、アプリの既定設定を変更して修正用に分解を複製する方法を示してから、ワークスペースで分解を再作成するスクリプトを生成する方法を示します。

阪神淡路大震災のデータをワークスペースに読み込みます。このデータは、オーストラリアのホバートにあるタスマニア大学の地震計で 1995 年 1 月 16 日 20:56:51 (GMT) から 51 分間にわたって 1 秒間隔で記録された測定値 (垂直加速度、nm/sec2) です。

load kobe

信号多重解像度アナライザーを開き、地震のデータをアプリに読み込みます。既定では、次数 4 の Symlet である sym4 を使用して、kobe1 という名前で信号の 4 レベルの MODWTMRA 分解が作成されます。[サンプルレート] ラジオ ボタンをクリックして、プロットが時間に対して行われるようにします。

次数 4 の Coiflet を使用して、新しい 6 レベルの分解を作成します。ツールストリップの [複製] をクリックします。kobe1 は現在 [分解された信号] で選択されている項目なので、1 番目の分解の複製が作成されます。複製の名前は kobe1Copy になります。[再構成] のプロットが更新され、新しい分解が追加されます。複製は、色以外は 1 番目の分解と同じです。[分解された信号] の名前を右クリックすることにより、複製の名前を変更できます。

ツールストリップの設定を以下の値に変更してから、[分解] をクリックします。

  • ウェーブレット: coif

  • 数値: 4

  • レベル: 6

[レベルの選択] で、再構成に含まれる分解の成分 (Approximation とレベル 5 およびレベル 6 の Detail) に注意してください。

レベル 4 には、全エネルギーの約 60% があります。レベル 5 および 6 を再構成から削除し、代わりにレベル 4 を含めます。[分解] ペインに Approximation とレベル 4 の Detail のみを表示します。分解と再構成の位置をほぼ合わせるには、[分解] ペインを [再構成] ペインの下にドラッグします。

エクスポートの選択肢は 3 つあります。再構成または分解全体をワークスペースにエクスポートするか、MATLAB™ スクリプトを作成できます。スクリプトを生成するには、[エクスポート][MATLAB スクリプトの生成] をクリックします。

エディターに無題のスクリプトが開き、次の実行可能なコードが表示されます。

% Logical array for selecting reconstruction elements
levelForReconstruction = [false, false, false, true, false, false, true];
% Perform the decomposition using modwt
wt = modwt(kobe, 'coif4', 6);
% Construct MRA matrix using modwtmra
mra = modwtmra(wt, 'coif4');
% Sum along selected multiresolution signals
kobe1Copy = sum(mra(levelForReconstruction,:),1);

levelForReconstruction の true と false の値は、[レベルの選択] での Include ボックスの選択に対応します。スクリプトをそのまま保存するか、同じ分解設定を他の信号に適用するように修正できます。スクリプトを実行して、元の信号と再構成をプロットします。このプロットは、色が異なる可能性がある以外、アプリに表示されている kobe1Copy の再構成と一致します。

t = 0:numel(kobe)-1;
plot(t,kobe)
grid on
hold on
plot(t,kobe1Copy,'LineWidth',2)
xlabel('Seconds')
title('Reconstruction')
legend('Original','Reconstruction','Location','northwest')
axis tight

パラメーター

多重解像度解析 (既定) を生成するために使用する直交ウェーブレット ファミリ。以下を指定します。

  • sym — Symlet

  • coif — Coiflet

  • db — Daubechies ウェーブレット

  • fk — Fejér-Korovkin ウェーブレット

Wavelet パラメーターは、多重解像度解析の生成のみに適用されます。

ウェーブレットの詳細については、関数 waveinfo を使用してください。たとえば、Daubechies ウェーブレットの詳細を調べるには、「waveinfo('db')」と入力します。

経験的モード分解で包絡線構築に使用する内挿法。次のいずれかを指定します。

  • spline — 3 次スプライン内挿

  • pchip — 区分的 3 次エルミート内挿多項式法

Interpolation パラメーターは、経験的モード分解の生成のみに適用されます。経験的モード分解を作成するときに、アプリで他のオプションを変更できます。詳細については、emd を参照してください。

プログラムによる使用

すべて展開する

signalMultiresolutionAnalyzer は、信号多重解像度アナライザー アプリを開きます。アプリが初期化されたら、[信号の読み込み] をクリックして解析用の信号をインポートします。

signalMultiresolutionAnalyzer(sig) は、信号多重解像度アナライザー アプリを開き、sym4 ウェーブレットと既定設定により modwtmramodwt を使用して、sig の多重解像度解析をインポート、分解およびプロットします。sig は、実数値のベクトルです。

既定では、このアプリは分解レベルをサンプル インデックスの関数としてプロットします。時間に関してプロットするには、このアプリを使用してサンプルレートまたはサンプル周期を設定できます。

ヒント

複数の信号を同時に分解するには、信号多重解像度アナライザーアプリのインスタンスを複数実行できます。

アルゴリズム

信号多重解像度アナライザーは、多重解像度解析の生成には modwtmodwtmra を、経験的モード分解の生成には emd を使用します。

参照

[1] Donoho, D. L., and I. M. Johnstone. “Ideal Spatial Adaptation by Wavelet Shrinkage.” Biometrika. Vol. 81, 1994, pp. 425–455 1994.

R2018b で導入