次数2のDaubechiesウェーブレットを表す.
次数 n のDaubechiesウェーブレットを表す.
DaubechiesWavelet
次数2のDaubechiesウェーブレットを表す.
次数 n のDaubechiesウェーブレットを表す.
詳細
- DaubechiesWaveletは直交ウェーブレット族を定義する.
- DaubechiesWavelet[n]は任意の正の整数 n について定義される.
- スケーリング関数(
)とウェーブレット関数(
)は長さ2n のコンパクトサポートを持つ.スケーリング関数は n 個のバニッシングモーメントを持つ. - DaubechiesWaveletはDiscreteWaveletTransform,WaveletPhi等の関数で使うことができる.
例題
すべて開く すべて閉じる例 (3)
Plot[WaveletPhi[DaubechiesWavelet[4], x], {x, 0, 7}]WaveletPhi[DaubechiesWavelet[4], x]Plot[WaveletPsi[DaubechiesWavelet[4], x], {x, -3, 4}, PlotRange -> All]WaveletPsi[DaubechiesWavelet[4], x]WaveletFilterCoefficients[DaubechiesWavelet[2], {"PrimalLowpass", "PrimalHighpass"}, WorkingPrecision -> ∞]スコープ (14)
基本的な用法 (8)
WaveletFilterCoefficients[DaubechiesWavelet[2], "PrimalLowpass"]WaveletFilterCoefficients[DaubechiesWavelet[2], "PrimalHighpass"]WaveletFilterCoefficients[DaubechiesWavelet[2], "LiftingFilter", WorkingPrecision -> ∞]%[{"LiftingMatrixForm", z}]lf = WaveletFilterCoefficients[DaubechiesWavelet[2], "LiftingFilter", WorkingPrecision -> ∞]lf["ForwardLiftingFunction"][Range[8]]//Simplifylf["InverseLiftingFunction"][%]//SimplifyPlot[WaveletPhi[DaubechiesWavelet[2], x], {x, 0, 3}]Plot[WaveletPhi[DaubechiesWavelet[6], x], {x, 0, 11}, PlotRange -> All]Table[Plot[WaveletPhi[DaubechiesWavelet[2], x, MaxRecursion -> i], {x, 0, 3}, PlotLabel -> i], {i, 1, 8, 2}]Plot[WaveletPsi[DaubechiesWavelet[2], x], {x, -1, 2}]次数6のDaubechiesWavelet:
Plot[WaveletPsi[DaubechiesWavelet[6], x], {x, -5, 6}, PlotRange -> All]Table[Plot[WaveletPsi[DaubechiesWavelet[2], x, MaxRecursion -> i], {x, -1, 2}, PlotLabel -> i, PlotRange -> All], {i, 1, 8, 2}]ウェーブレット変換 (5)
DiscreteWaveletTransformを計算する:
data = Table[Sinc[t^2], {t, -3 π, 3 π, (6 π/1023)}];ListLinePlot[data, PlotRange -> All]dwt = DiscreteWaveletTransform[data, DaubechiesWavelet[3], 2]dwt["TreeView"]dwt["Dimensions"]WaveletListPlot[dwt, PlotLayout -> "CommonXAxis"]DiscreteWaveletPacketTransformを計算する:
data = Table[Sinc[t^2], {t, -3 π, 3 π, (6 π/1023)}];dwpt = DiscreteWaveletPacketTransform[data, DaubechiesWavelet[4], 2]dwpt["TreeView"]dwpt["Dimensions"]WaveletListPlot[dwpt, PlotLayout -> "CommonXAxis"]StationaryWaveletTransformを計算する:
data = Table[Sinc[t^2], {t, -3 π, 3 π, (6 π/1023)}];swt = StationaryWaveletTransform[data, DaubechiesWavelet[4], 2];swt["TreeView"]swt["Dimensions"]WaveletListPlot[swt, PlotLayout -> "CommonXAxis"]StationaryWaveletPacketTransformを計算する:
data = Table[Sinc[t^2], {t, -3 π, 3 π, (6 π/1023)}];swpt = StationaryWaveletPacketTransform[data, DaubechiesWavelet[4], 2];swpt["TreeView"]swpt["Dimensions"]WaveletListPlot[swpt, PlotLayout -> "CommonXAxis"]LiftingWaveletTransformを計算する:
(data = Table[Sinc[t^2], {t, -3 π, 3 π, (6 π/1023)}];);lwt = LiftingWaveletTransform[data, DaubechiesWavelet[4], 2];lwt["TreeView"]lwt["Dimensions"]WaveletListPlot[lwt, PlotLayout -> "CommonXAxis"]より高い次元 (1)
多変量スケーリング関数と多変量ウェーブレット関数はそれぞれの一変量関数の積である:
ϕ = WaveletPhi[DaubechiesWavelet[3]];
ψ = WaveletPsi[DaubechiesWavelet[3]];Plot3D[Evaluate[ϕ[x] ψ[y]], {x, 0, 5}, {y, 0, 5}, PlotRange -> All, ColorFunction -> "SolarColors", Mesh -> None, Axes -> None]Plot3D[Evaluate[ϕ[x] ψ[y]], {x, 0, 5}, {y, -2, 3}, PlotRange -> All, ColorFunction -> "SolarColors", Mesh -> None, Axes -> None]Plot3D[Evaluate[ψ[x] ϕ[y]], {x, -2, 3}, {y, 0, 5}, PlotRange -> All, ColorFunction -> "SolarColors", Mesh -> None, Axes -> None]Plot3D[Evaluate[ψ[x] ψ[y]], {x, -2, 3}, {y, -2, 3}, PlotRange -> All, ColorFunction -> "SolarColors", Mesh -> None, Axes -> None]アプリケーション (3)
Daubechiesウェーブレット係数を使って関数を近似する:
data = Table[Abs[Sin[2 π x]] + 1.5 Abs[Cos[2 π x - π]], {x, 0, 1, (1/2^6 - 1)}];dwd = LiftingWaveletTransform[data, DaubechiesWavelet[4]];n 個の最大係数を保ちその他すべてを閾値化することでもとのデータを近似する:
{data8, data16, data32} = Table[InverseWaveletTransform[WaveletThreshold[dwd, {"LargestCoefficients", n}, Automatic]], {n, {8, 16, 32}}];ListLinePlot[{data, data8, data16, data32}, PlotRange -> All]data = Table[Sin[4 π t] + 2 Exp[-10^5 ((1/3) - t)^2], {t, 0, 1, (1/2^9)}];ListLinePlot[data]dwt = DiscreteWaveletTransform[data, DaubechiesWavelet[4], 4]WaveletListPlot[dwt, {{1}, {0, 1}, {0, 0, 1}, {0, 0, 0}}, PlotLayout -> "CommonXAxis", Method -> {"Inverse" -> True}]data = Table[Sin[2 π t], {t, 0, 1, (1/63)}];ListPlot[data]cumulativeEnergy[data_] := Module[{c = Sort[Flatten[data]^2, Greater]}, (Accumulate[c]/Total[c])]ListPlot[cumulativeEnergy[data]]信号のエネルギーは比較的少ないウェーブレット係数で捉えられる:
dwd1 = LiftingWaveletTransform[data, DaubechiesWavelet[4], 1];dwd2 = LiftingWaveletTransform[data, DaubechiesWavelet[4], 2];ListPlot[{cumulativeEnergy[data], cumulativeEnergy[Last /@ dwd1[Automatic]], cumulativeEnergy[Last /@ dwd2[Automatic]]}, PlotStyle -> {Red, Blue, Orange}]特性と関係 (13)
DaubechiesWavelet[1]はHaarWaveletに等しい:
WaveletFilterCoefficients[HaarWavelet[]] === WaveletFilterCoefficients[DaubechiesWavelet[1]]Chop[Total[WaveletFilterCoefficients[DaubechiesWavelet[3], "PrimalLowpass"][[All, 2]]]]Chop[Total[WaveletFilterCoefficients[DaubechiesWavelet[3], "PrimalHighpass"][[All, 2]]]]ϕ = WaveletPhi[DaubechiesWavelet[4]];Subsuperscript[∫, -∞, ∞]ϕ[x]ⅆxTable[NIntegrate[ϕ[(x/2^j)], {x, -∞, ∞}, AccuracyGoal -> 4] - 2^j, {j, 0, 3}]Subsuperscript[∫, -∞, ∞]WaveletPsi[DaubechiesWavelet[4], x]ⅆxウェーブレット関数は同じスケールのスケーリング関数と直交する.
:
NIntegrate[WaveletPsi[DaubechiesWavelet[3], x] WaveletPhi[DaubechiesWavelet[3], x], {x, -∞, ∞}, AccuracyGoal -> 4]WaveletFilterCoefficients[DaubechiesWavelet[3]][[All, 2]].WaveletFilterCoefficients[DaubechiesWavelet[3], "PrimalHighpass"][[All, 2]]DaubechiesWavelet[n]は n 個のバニッシングモーメントを持つ.
:
ψ = WaveletPsi[DaubechiesWavelet[2]];Chop[Table[NIntegrate[x^k ψ[x], {x, -∞, ∞}, AccuracyGoal -> 5, MaxRecursion -> 0], {k, 0, 4}]]これは,線形信号はそのようなスケーリング関数のパート({0})で完全に表される事を意味する:
dwt = LiftingWaveletTransform[ArrayPad[{1, 2, 3, 4}, 2, "Extrapolated"], DaubechiesWavelet[2], 1];Take[InverseWaveletTransform[dwt, Automatic, {0}], 3 ;; -3]dwt = LiftingWaveletTransform[{1, 4, 9, 16}, DaubechiesWavelet[2], 1]InverseWaveletTransform[dwt, Automatic, {0}]ϕ = WaveletPhi[DaubechiesWavelet[2]];a = WaveletFilterCoefficients[DaubechiesWavelet[2], "PrimalLowpass"];scalet[x_, ϕ_, a_] := 2 Table[a[[i, 2]] ϕ[2 x - a[[i, 1]]], {i, Length[a]}]{Plot[Evaluate[scalet[x, ϕ, a]], {x, 0, 3}, PlotRange -> All], Plot[Total[scalet[x, ϕ, a]], {x, 0, 3}, PlotRange -> All]}ϕ = WaveletPhi[DaubechiesWavelet[2]];b = WaveletFilterCoefficients[DaubechiesWavelet[2], "PrimalHighpass"];wavelet[x_, ϕ_, b_] := 2 Table[b[[i, 2]] ϕ[2 x - b[[i, 1]]], {i, Length[b]}]{Plot[Evaluate[wavelet[x, ϕ, b]], {x, -1, 2}, PlotRange -> All], Plot[Total[wavelet[x, ϕ, b]], {x, -1, 2}, PlotRange -> All]}h[wav_, ω_] := With[{a = WaveletFilterCoefficients[wav]}, Underoverscript[∑, i, Length[a]]a[[i, 2]] Exp[-I a[[i, 1]] ω]]Plot[Abs[h[DaubechiesWavelet[2], ω]], {ω, -π, π}, Ticks -> {{-π, -(π/2), 0, (π/2), π}, Automatic}, AxesLabel -> {ω, Abs[H[ω]]}]Plot[{Abs[h[DaubechiesWavelet[2], ω]], Abs[h[DaubechiesWavelet[12], ω]]}, {ω, -π, π}, Ticks -> {{-π, -(π/2), 0, (π/2), π}, Automatic}, AxesLabel -> {ω, Abs[H[ω]]}]h[wav_, ω_] := With[{a = WaveletFilterCoefficients[wav]}, Underoverscript[∑, i, Length[a]]a[[i, 2]] Exp[-I a[[i, 1]] ω]]fh[wav_, ω_, j_] := Abs[Underoverscript[∏, i, j]h[wav, (ω/2^i)]]Plot[fh[DaubechiesWavelet[2], ω, 10], {ω, -10 π, 10 π}, PlotRange -> All, AxesLabel -> {ω, Abs[Overscript[ϕ, ^ ][ω]]}]g[wav_, ω_] := With[{b = WaveletFilterCoefficients[wav, "PrimalHighpass"]}, Underoverscript[∑, i, Length[b]]b[[i, 2]] Exp[-I b[[i, 1]] ω]]Plot[Abs[g[DaubechiesWavelet[2], ω]], {ω, -π, π}, Ticks -> {{-π, -(π/2), 0, (π/2), π}, Automatic}, AxesLabel -> {ω, Abs[G[ω]]}]Plot[{Abs[g[DaubechiesWavelet[2], ω]], Abs[g[DaubechiesWavelet[12], ω]]}, {ω, -π, π}, Ticks -> {{-π, -(π/2), 0, (π/2), π}, Automatic}, AxesLabel -> {ω, Abs[G[ω]]}]h[wav_, ω_] := With[{a = WaveletFilterCoefficients[wav]}, Underoverscript[∑, i, Length[a]]a[[i, 2]] Exp[-I a[[i, 1]] ω]]g[wav_, ω_] := With[{b = WaveletFilterCoefficients[wav, "PrimalHighpass"]}, Underoverscript[∑, i, Length[b]]b[[i, 2]] Exp[-I b[[i, 1]] ω]]fg[wav_, ω_, j_] := Abs[g[wav, (ω/2)] Underoverscript[∏, i = 2, j]h[wav, (ω/2^i)]]Plot[fg[DaubechiesWavelet[2], ω, 10], {ω, -10 π, 10 π}, PlotRange -> All, AxesLabel -> {ω, Abs[Overscript[ψ, ^ ][ω]]}]おもしろい例題 (2)
ϕ[x_, j_, k_] := 2^j / 2 WaveletPhi[DaubechiesWavelet[4], 2^j x - k]Plot[Evaluate[Table[ϕ[x, j, 0], {j, 0, 4}]], {x, 0, 2}, Filling -> Axis, PlotRange -> All]Plot[Evaluate[Table[ϕ[x, 2, k], {k, 0, 2^2 - 1}]], {x, 0, 2}, Filling -> Axis, PlotRange -> All]ψ[x_, j_, k_] := 2^j / 2 WaveletPsi[DaubechiesWavelet[4], 2^j x - k]Plot[Evaluate[Table[ψ[x, j, 0], {j, 0, 4}]], {x, 0, 2}, Filling -> Axis, PlotRange -> All]Plot[Evaluate[Table[ψ[x, 2, k], {k, 0, 2^2 - 1}]], {x, -0.5, 1.5}, Filling -> Axis, PlotRange -> All]テクニカルノート
関連するガイド
-
▪
- ウェーブレット ▪
- 信号の可視化と解析 ▪
- 信号フィルタリングとフィルタ設計 ▪
- 信号変換
テキスト
Wolfram Research (2010), DaubechiesWavelet, Wolfram言語関数, https://reference.wolfram.com/language/ref/DaubechiesWavelet.html.
CMS
Wolfram Language. 2010. "DaubechiesWavelet." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/DaubechiesWavelet.html.
APA
Wolfram Language. (2010). DaubechiesWavelet. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/DaubechiesWavelet.html
BibTeX
@misc{reference.wolfram_2026_daubechieswavelet, author="Wolfram Research", title="{DaubechiesWavelet}", year="2010", howpublished="\url{https://reference.wolfram.com/language/ref/DaubechiesWavelet.html}", note=[Accessed: 15-September-2026]}
BibLaTeX
@online{reference.wolfram_2026_daubechieswavelet, organization={Wolfram Research}, title={DaubechiesWavelet}, year={2010}, url={https://reference.wolfram.com/language/ref/DaubechiesWavelet.html}, note=[Accessed: 15-September-2026]}