DiscreteWaveletTransform

DiscreteWaveletTransform[data]

data の配列の離散ウェーブレット変換(DWT)を与える.

DiscreteWaveletTransform[data,wspec]

ウェーブレット wspec を使って離散ウェーブレット変換を与える.

DiscreteWaveletTransform[data,wave,r]

レベル r の細分化を使って離散ウェーブレット変換を与える.

詳細とオプション

  • DiscreteWaveletTransformはウェーブレット係数配列の木を表すDiscreteWaveletDataオブジェクトを与える.
  • DiscreteWaveletDataの特性 dwddwd["prop"]で求まる.使用可能な特性のリストは dwd["Properties"]で求まる.
  • data は任意の深さの矩形配列である.
  • data は次のいずれでもよい.
  • list任意階数の数値配列
    image任意のImageオブジェクト
    audioAudioオブジェクトまたはサンプルされたSoundオブジェクト
  • 使用可能なウェーブレット wave
  • BattleLemarieWavelet[]Bスプラインに基づいたBattleLemariéウェーブレット
    BiorthogonalSplineWavelet[]Bスプラインに基づいたウェーブレット
    CoifletWavelet[]Daubechiesウェーブレットの対称性変種
    DaubechiesWavelet[]Daubechiesウェーブレット
    HaarWavelet[]古典的なHaarウェーブレット
    MeyerWavelet[]周波数領域で定義されるウェーブレット
    ReverseBiorthogonalSplineWavelet[]Bスプラインに基づいたウェーブレット( 逆双対ウェーブレットと主ウェーブレット)
    ShannonWavelet[]シンク関数に基づいたウェーブレット
    SymletWavelet[]最小非対称直交ウェーブレット
  • デフォルトの waveHaarWavelet[]である.
  • 細分化レベル r の設定値を高くすると,スケールの大きい特徴が解決される.
  • デフォルトの細分化レベル rTemplateBox[{{{InterpretationBox[{log, _, DocumentationBuild`Utils`Private`Parenth[2]}, Log2, AutoDelete -> True], (, n, )}, +, {1, /, 2}}}, Floor]で与えられる.ただし,data の最小次元である. »
  • レベル のウェーブレット係数の木は,粗い係数 と詳細化係数 からなる. は入力 data を表す.
  • 前方変換は で与えられる. »
  • 逆変換は で与えられる. »
  • はローパスフィルタ係数で, はハイパスフィルタ係数である.どちらもそれぞれのウェーブレット族で定義される.
  • の次元は wd_(j+1)=TemplateBox[{{{1, /, 2},  , {(, {{wd, _, j}, +, fl, -, 2}, )}}}, Ceiling]で与えられる.ただし, は入力 data の次元であり,fl は対応する wspec のフィルタ長である. »
  • 使用可能なオプション
  • MethodAutomatic使用するメソッド
    Padding "Periodic"境界を越えてデータをどのように延長するか
    WorkingPrecision MachinePrecision内部計算で使用する精度
  • Paddingの設定値はArrayPadで使用できるものと同じである.
  • InverseWaveletTransformは逆変換を与える.

例題

すべて開くすべて閉じる

  (3)

HaarWaveletを使って離散ウェーブレット変換を計算する:

Normalを使ってすべての係数を見る:

音声信号を変換する:

dwd[,"Audio"]を使って係数信号を取り出す:

逆変換を計算する:

Imageオブジェクトを変換する:

dwd[,"Image"]を使って係数の画像を抽出する:

逆変換を計算する:

スコープ  (36)

基本的な用法  (6)

ウェーブレット変換を計算する:

結果のDiscreteWaveletDataは変換係数の木構造を表している:

逆変換を行うと入力が再構築される:

DiscreteWaveletDataオブジェクトから有用な特性を抽出することができる:

全特性のリストを得る:

データと係数の次元を求める:

Normalを使ってウェーブレットのすべての係数を明示的に求める:

Allを引数として使ってすべての係数を得ることもできる:

Automaticを使って逆変換に使われた係数だけを求める:

"TreeView"あるいは"WaveletIndex"を使ってどのウェーブレット係数が使えるかを明らかにする:

特定の係数配列を抽出する:

ウェーブレットの指標指定リストに対応するいくつかのウェーブレット係数を抽出する:

ウェーブレット指標がパターンにマッチするすべての係数を抽出する:

WaveletListPlot等の関数では,デフォルトでAutomatic係数が使われている:

周波数分解能を上げるためにより高い細分化のレベルを使う:

細分化レベルを下げるとより多くの信号エネルギーが{0,0,0}に残される:

細分化レベルをより高めると,{0,0,0}はさらに多くの成分に分解される:

ウェーブレット族  (10)

いろいろなウェーブレット族を使って離散ウェーブレット変換を計算する:

係数を比較する:

ウェーブレットのいろいろな族を使って異なる特徴を捉える:

HaarWavelet(デフォルト):

DaubechiesWavelet

BattleLemarieWavelet

BiorthogonalSplineWavelet

CoifletWavelet

MeyerWavelet

ReverseBiorthogonalSplineWavelet

ShannonWavelet

SymletWavelet

ベクトルデータ  (6)

WaveletListPlotを使って,係数を共通水平軸上でプロットする:

共通垂直軸に対してプロットする:

WaveletScalogramを使い,係数を時間と細分化レベルの関数として可視化する:

マウスポインタが係数上にくると,係数指標がツールチップとして現れる:

定数データ:

係数は粗い係数{0,0,}を除いてすべて小さい:

分解可能な最高の周波数(ナイキスト(Nyquist)周波数)で振動するデータ:

小さくないのは第1詳細化係数{1}のみである:

大きい不連続箇所のあるデータ:

粗い係数{0,}はデータと同じ大きいスケールの構造を持つ:

詳細化係数は不連続箇所に敏感である:

空間構造と周波数構造の両方を持つデータ:

粗い係数{0,}はデータの局所平均を辿る:

第1詳細化係数は振動している箇所を突き止める:

共通垂直軸上の全係数:

行列データ  (5)

二次元離散ウェーブレット変換を計算する:

ウェーブレット係数の木構造を見る:

逆変換をするともとの信号に戻る:

WaveletMatrixPlotを使ってさまざまなウェーブレット係数を可視化する:

より高い細分化レベルでのウェーブレット変換のWaveletMatrixPlot

二次元では,各方向のフィルタリング操作のベクトルが計算できる:

これらのベクトルを二進数展開として解釈するとウェーブレット指標の数が得られる:

Haarウェーブレットのローパスフィルタとハイパスフィルタを得る:

結果の2Dフィルタは2方向のフィルタの外積である:

ステップデータのウェーブレット変換:

垂直方向に不連続性を有するデータ:

垂直詳細化係数,つまりウェーブレット指標{,1}のみが非零である:

水平に不連続性を有するデータ:

水平詳細化係数,つまりウェーブレット指標{,2}のみが非零である:

対角に不連続性を有するデータ:

対角詳細化係数,つまりウェーブレット指標{,3}のみが非零である:

配列データ  (2)

三次元離散ウェーブレット変換を計算する:

すべての係数の木構造を見る:

逆変換でもとの信号に戻る:

三次元クロス配列のウェーブレット変換:

ウェーブレット係数を可視化する:

もとのデータのエネルギーは変換された係数内に保存されている:

画像データ  (4)

Imageオブジェクトを変換する:

逆変換するとImageオブジェクトが再構築される:

ウェーブレット係数は通常各画像チャンネルのデータのリストとして与えられる:

すべての係数をImageオブジェクトとして得る:

カラーレベルの再スケールを施していない生のImageオブジェクトを得る:

{0,1}係数の逆変換をImageオブジェクトとして得る:

WaveletImagePlotを使って逆変換に使われた係数を階層的格子レイアウトでプロットする:

Imageウェーブレット係数がImageTypeの有効範囲の外側にある:

"ImageFunction"->Identityは正規化されていない画像のウェーブレット係数を与える:

カラーチャンネルが1から0までの有効範囲外にある:

デフォルトで,係数の正規化には"ImageFunction"->ImageAdjustが使われる:

カラーチャンネルが有効な1から0の範囲に収まった:

サウンドデータ  (3)

Soundオブジェクトを変換する:

逆変換するとSoundオブジェクトが再構築される:

デフォルトで,係数は各サウンドチャンネルのデータのリストとして与えられる:

{0,1}係数をSoundオブジェクトとして得る:

Soundオブジェクトとしての{0,0,1}係数の逆変換:

MenuViewを使ってすべての係数をブラウズする:

一般化と拡張  (3)

DiscreteWaveletTransformは記号による量の配列に使うことができる:

逆変換で入力が厳密に復元される:

任意の内部作業精度を指定する:

複素数値のデータを使う:

ウェーブレット係数が複素数になる:

逆変換で入力が復元される:

オプション  (5)

Padding  (2)

Paddingの設定値は"Periodic"を含みArrayPadのメソッドのものと同じである:

"Reversed"

"ReversedNegation"

"Reflected"

"ReflectedDifferences"

"ReversedDifferences"

"Extrapolated"

充填で境界効果を除くことができる:

デフォルトの"Periodic"充填を使う:

"Extrapolated"充填を使うと非周期的なデータでは境界効果が薄くなる:

WorkingPrecision  (3)

デフォルトで,WorkingPrecision->MachinePrecisionが使われる:

より精度の高い評価を使う:

ゼロに近い数では,桁数が正しい数字のよりよい指標として確度が使える:

WorkingPrecision->を使って厳密計算を行う:

アプリケーション  (11)

ウェーブレットの圧縮  (1)

数少ない非零係数による表現を求めてデータを圧縮する:

SymletWavelet[n]には n 個のバニッシングモーメントがあり,次数 n の多項式を表す:

Countはゼロに近いウェーブレット係数の数を数える:

不連続箇所と辺を見付ける  (2)

ウェーブレット領域の不連続箇所を可視化する:

不連続領域の詳細化係数はより大きい値を持つ:

画像の辺を見付ける:

粗い係数をゼロに設定し詳細化係数のみを使って再構築する:

エネルギー比較  (1)

信号中の累積エネルギー,そのウェーブレット係数,フーリエ係数を比較する:

信号中の順序化された累積エネルギーを計算する:

ウェーブレット係数とフーリエ係数を計算する:

離散ウェーブレット変換は離散フーリエ変換より少ない係数で多くのエネルギーを捉えることができる:

ノイズ除去  (3)

エネルギー依存の閾値化を行う:

各細分化レベルに含まれるエネルギーの割合を計算する:

含んでいるエネルギーが1%より少ないウェーブレット係数を0に設定する:

振幅依存の閾値化を行う:

WaveletThresholdを使って"Universal"閾値化を行う:

Steinの不偏向リスク推定器平滑化を使う:

Imageからノイズを除去する:

各レベルで適応的に計算された閾値"SURE""Soft"閾値化を行う:

閾値係数を反転させる:

周波数フィルタリング  (1)

ウェーブレット変換を使って周波数のフィルタリングができる:

2つの信号をフィルタで除去するため,まずウェーブレット変換を行う:

次にWaveletListPlotを使って周波数の分布を可視化する:

低い周波数をフィルタで除去するために粗い係数のみを保つようにする:

高い周波数をフィルタで除去するために,詳細化係数のみを保つようにする:

金融  (3)

2000年1月1日からのIBMの株価動向を抽出する:

時系列の動向はローパスフィルタ係数で捉えられる:

すべての詳細化係数の閾値化と時系列の反転化でトレンドが与えられる:

金融の時系列からトレンドを除去する:

詳細化係数がトレンドを除去された時系列を捉える:

詳細化係数を除去し反転させることでトレンドを除去する:

金融の時系列における利益の分散を研究する:

HaarWaveletSymletWaveletを使ってウェーブレット変換を行う:

時系列でのGEの利益は低周波振動を示していないので,高スケールの詳細化係数はゼロからの大幅な変動を示しはしない:

どちらのフィルタも時系列の分散を捉えはするが,大域通過特性に幅があるため分布のさせ方は異なる:

SymletWaveletHaarWaveletよりも特定の周波数間隔にある特徴をよりうまく分離する:

特性と関係  (15)

DiscreteWaveletPacketTransformはウェーブレット係数の完全木を計算する:

DiscreteWaveletTransformは係数の完全木の部分木を計算する:

DiscreteWaveletTransform係数は細分化の各レベルで長さが半分になる:

循環されたデータは異なる係数を与える:

StationaryWaveletTransform係数はもとのデータと同じ長さである:

循環されたデータは循環された係数を与える:

多次元離散ウェーブレット変換は一次元パケット変換に関係している:

Haarウェーブレット(デフォルト)でデータ長が の場合,計算される係数はどれも等しい:

デフォルトの細分化はTemplateBox[{{{InterpretationBox[{log, _, DocumentationBuild`Utils`Private`Parenth[2]}, Log2, AutoDelete -> True], (, n, )}, +, {1, /, 2}}}, Floor]で与えられる:

より高次元:

直交ウェーブレット族用のエネルギーのノルムは保存される:

双直交ウェーブレット族用のエネルギーのノルムはほぼ保存される:

データの平均は変換の最高の細分化レベルで捉えられる:

最高の細分化レベルの係数を抽出する:

各細分化レベルでの正規化のための相殺:

個々の係数配列からの逆変換の総和はもとのデータを与える:

各ウェーブレット係数配列を別々に反転させる:

その総和でもとのデータが与えられる:

周期的なデータのために離散ウェーブレット係数を計算する:

コンパクトサポートを得るためにフィルタ係数を定義する:

レベル の粗い係数は で与えられる.ただし である:

レベル の詳細化係数は で与えられる:

不完全離散逆ウェーブレット変換を計算する:

コンパクトサポートを得るためにフィルタ係数を定義する:

レベル の粗い係数は以下で与えられる:

レベル の詳細化係数は以下で与えられる:

レベル の逆ウェーブレット変換は で与えられる:

細分化レベル で粗い係数{0,0}を再構築する:

細分化レベル で粗い係数{0}を再構築する:

ウェーブレット係数の次元を計算する:

細分化レベル では,ウェーブレット係数の次元は wd_(j+1)=TemplateBox[{{{1, /, 2},  , {(, {{wd, _, j}, +, fl, -, 2}, )}}}, Ceiling]で与えられる.ただし,は入力 data の次元を表す:

次元と dwd における係数次元を比較する:

一次元のHaar離散ウェーブレット変換を計算する:

{0}{1}のウェーブレット係数を計算する:

DiscreteWaveletTransformと比較する:

二次元では,各次元で異なるフィルタが適用される:

Haarウェーブレットのローパスとハイパスのフィルタ:

行列データのHaarウェーブレット変換:

HaarWaveletを使ってDiscreteWaveletTransformと比較する:

画像チャンネルは別々に変換される:

別々に変換された画像チャンネルの{0}係数を組み合せる:

もと画像のDiscreteWaveletTransform{0}係数と比較する:

画像は同じである:

離散ウェーブレット変換は充填に必要な余分な係数のあるLiftingWaveletTransformに似ている:

考えられる問題  (1)

充填はウェーブレット係数の総エネルギーに影響することがある:

エネルギーは保存されない:

0で充填して係数のエネルギー保存を確実にする:

おもしろい例題  (1)

データの充填された行列を作成する:

Haar離散ウェーブレット変換係数の3Dプロットを作成する:

Wolfram Research (2010), DiscreteWaveletTransform, Wolfram言語関数, https://reference.wolfram.com/language/ref/DiscreteWaveletTransform.html (2017年に更新).

テキスト

Wolfram Research (2010), DiscreteWaveletTransform, Wolfram言語関数, https://reference.wolfram.com/language/ref/DiscreteWaveletTransform.html (2017年に更新).

CMS

Wolfram Language. 2010. "DiscreteWaveletTransform." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2017. https://reference.wolfram.com/language/ref/DiscreteWaveletTransform.html.

APA

Wolfram Language. (2010). DiscreteWaveletTransform. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/DiscreteWaveletTransform.html

BibTeX

@misc{reference.wolfram_2024_discretewavelettransform, author="Wolfram Research", title="{DiscreteWaveletTransform}", year="2017", howpublished="\url{https://reference.wolfram.com/language/ref/DiscreteWaveletTransform.html}", note=[Accessed: 17-November-2024 ]}

BibLaTeX

@online{reference.wolfram_2024_discretewavelettransform, organization={Wolfram Research}, title={DiscreteWaveletTransform}, year={2017}, url={https://reference.wolfram.com/language/ref/DiscreteWaveletTransform.html}, note=[Accessed: 17-November-2024 ]}