Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

wavedec

多重レベル 1 次元離散ウェーブレット変換

説明

[c,l] = wavedec(x,n,wname) は、ウェーブレット wname を使用してレベル n における 1 次元信号 x のウェーブレット分解を返します。出力の分解構造は、ウェーブレット分解ベクトル c とブックキーピング ベクトル l (c の解析に使用) で構成されます。

メモ

gpuArray 入力でサポートされているモードは、'symh' ('sym') および 'per' です。入力が gpuArray の場合、wavedec で使用される離散ウェーブレット変換の拡張モードは、現在の拡張モードが 'per' でない限り、既定で 'symh' になります。GPU での多重レベル離散ウェーブレット変換の例を参照してください。

[c,l] = wavedec(x,n,LoD,HiD) は、指定されたローパスおよびハイパスのウェーブレット分解フィルター LoD および HiD を使用してウェーブレット分解を返します。

すべて折りたたむ

1 次元信号を読み込んでプロットします。

load sumsin 
plot(sumsin)
title('Signal')

Figure contains an axes object. The axes object with title Signal contains an object of type line.

次数 2 の Daubechies ウェーブレットを使用して、信号の 3 レベル ウェーブレット分解を実行します。分解から粗いスケールの Approximation 係数と Detail 係数を抽出します。

[c,l] = wavedec(sumsin,3,'db2');
approx = appcoef(c,l,'db2');
[cd1,cd2,cd3] = detcoef(c,l,[1 2 3]);

係数をプロットします。

subplot(4,1,1)
plot(approx)
title('Approximation Coefficients')
subplot(4,1,2)
plot(cd3)
title('Level 3 Detail Coefficients')
subplot(4,1,3)
plot(cd2)
title('Level 2 Detail Coefficients')
subplot(4,1,4)
plot(cd1)
title('Level 1 Detail Coefficients')

Figure contains 4 axes objects. Axes object 1 with title Approximation Coefficients contains an object of type line. Axes object 2 with title Level 3 Detail Coefficients contains an object of type line. Axes object 3 with title Level 2 Detail Coefficients contains an object of type line. Axes object 4 with title Level 1 Detail Coefficients contains an object of type line.

どの GPU がサポートされているかについては、GPU 計算の要件 (Parallel Computing Toolbox)を参照してください。

ノイズがある Doppler 信号を読み込みます。gpuArray を使用して信号を GPU に入力します。現在の拡張モードを保存します。

load noisdopp
noisdoppg = gpuArray(noisdopp);
origMode = dwtmode('status','nodisp');

dwtmode を使用して拡張モードをゼロ パディングに変更します。db4 ウェーブレットを使用して、GPU での信号の 3 レベル DWT を求めます。

dwtmode('zpd','nodisp')
[c,l] = wavedec(noisdoppg,3,'db4');

現在の拡張モード zpdgpuArray 入力をサポートしていません。そのため、DWT は代わりに sym 拡張モードを使用して実行されます。これを確認するには、拡張モードを sym に設定して noisdoppg の DWT を求め、前の結果と比較します。

dwtmode('sym','nodisp')
[csym,lsym] = wavedec(noisdoppg,3,'db4');
[max(abs(c-csym)) max(abs(l-lsym))]
ans =

     0     0

現在の拡張モードを per に設定して noisdopp の 3 レベル DWT を求めます。拡張モード pergpuArray 入力をサポートしています。結果が sym の結果と異なっていることを確認します。

dwtmode('per','nodisp')
[cper,lper] = wavedec(noisdoppg,3,'db4');
[length(csym) ; length(cper)]
ans = 2×1

        1044
        1024

[lsym ; lper]
ans = 2×5

         134         134         261         515        1024
         128         128         256         512        1024

拡張モードを元の設定に戻します。

dwtmode(origMode,'nodisp')

入力引数

すべて折りたたむ

入力信号。ベクトルで指定します。

データ型: single | double
複素数のサポート: あり

分解レベル。正の整数として指定します。wavedec では最大レベルの制限は適用されません。ウェーブレット係数が境界の影響を受けないようにするには wmaxlev を使用します。用途で境界の影響が問題にならない場合は、一般に nfix(log2(length(x))) 以下に設定します。

データ型: single | double

解析ウェーブレット。文字ベクトルまたは string スカラーとして指定します。

メモ

wavedec では、タイプ 1 (直交) とタイプ 2 (双直交) のウェーブレットのみがサポートされます。直交ウェーブレットと双直交ウェーブレットの一覧については、wfilters を参照してください。

ウェーブレット分解フィルター。偶数長の実数値ベクトルのペアを指定します。LoD はローパス分解フィルター、HiD はハイパス分解フィルターです。LoDHiD の長さは等しくなければなりません。詳細については、wfilters を参照してください。

データ型: single | double

出力引数

すべて折りたたむ

ウェーブレット分解ベクトル。ベクトルとして返されます。ブックキーピング ベクトル l は、ウェーブレット分解ベクトルの係数をレベルごとに解析するのに使用されます。

データ型: single | double

ブックキーピング ベクトル。正の整数のベクトルとして返されます。各レベルの係数の数と元の信号の長さがベクトルに格納されます。

ブックキーピング ベクトルは、ウェーブレット分解ベクトル c の係数をレベルごとに解析するのに使用されます。分解ベクトルとブックキーピング ベクトルは、このレベル 3 の分解の図のように編成されます。

データ型: single | double

アルゴリズム

長さ N の信号 s が与えられた場合、DWT は最大 log2 N のステップで構成されます。s から始まり、最初のステップで Approximation 係数 cA1 と Detail 係数 cD1 の 2 組の係数が生成されます。Approximation 係数と Detail 係数は、それぞれローパス フィルター LoD とハイパス フィルター HiD による s の畳み込みとその後の 2 進間引き (ダウンサンプリング) によって得られます。

ここで、

  • — フィルター X での畳み込み

  • 2 — ダウンサンプリング (偶数のインデックスが付いた要素を維持)

各フィルターの長さは 2n に等しくなります。N = length(s) の場合、信号 F および G の長さは N + 2n −1、係数 cA1 および cD1 の長さは次のようになります。

floor(N12)+n

次のステップで、Approximation 係数 cA1 が同じスキームを使用して 2 つの部分に分割されます。つまり、s を cA1 に置き換えて、cA2 と cD2 が生成されます。

レベル j で解析された信号 s のウェーブレット分解の構造は、[cAj, cDj, ..., cD1] になります。

この構造には、j = 3 の場合、次のツリーの終端ノードが含まれます。

参照

[1] Daubechies, I. Ten Lectures on Wavelets, CBMS-NSF Regional Conference Series in Applied Mathematics. Philadelphia, PA: SIAM Ed, 1992.

[2] Mallat, S. G. “A Theory for Multiresolution Signal Decomposition: The Wavelet Representation,” IEEE Transactions on Pattern Analysis and Machine Intelligence. Vol. 11, Issue 7, July 1989, pp. 674–693.

[3] Meyer, Y. Wavelets and Operators. Translated by D. H. Salinger. Cambridge, UK: Cambridge University Press, 1995.

拡張機能

バージョン履歴

R2006a より前に導入