DiscreteWaveletData[{wind1coef1,…},wave,wtrans]
产生离散小波数据对象,其中小波系数 coefi 对应于小波索引 windi,小波 wave 和小波变换 wtrans.
DiscreteWaveletData[{wind1coef1,…},wave,wtrans,{d1,…}]
产生离散小波数据对象,假设数据维数为 {d1,…}.
DiscreteWaveletData
DiscreteWaveletData[{wind1coef1,…},wave,wtrans]
产生离散小波数据对象,其中小波系数 coefi 对应于小波索引 windi,小波 wave 和小波变换 wtrans.
DiscreteWaveletData[{wind1coef1,…},wave,wtrans,{d1,…}]
产生离散小波数据对象,假设数据维数为 {d1,…}.
更多信息和选项
- DiscreteWaveletData[{wind1->coef1,…},…] 总是转换为具有 DiscreteWaveletData[coefs,winds,…] 的结构的优化的标准形式.
- 系数 coefi 可以为任意深度的 Image[…]、 Sound[…] 或 SampledSoundList[…] 对象的阵列.
- 小波变换 wtrans 使用的选项也可以用作 DiscreteWaveletData 的选项.
- 在标准的输出格式中,只输出简略的 wtrans,精细数和原数据的维数.
- Normal[DiscreteWaveletData[…]] 给出规则列表 {wind1->coef1,wind2->coef2,…},它给出小波索引 windi 与对应系数阵列 coefi 间的对应关系.
- DiscreteWaveletData 代表一小波分解树,其中每个节点拥有小波系数. 树中的每个节点都有一个独特的小波索引向量,可用于访问小波系数.
- 小波索引 wind 是一个整数向量. 向量的长度代表小波分解树的精细度. 对于长度为
的索引向量,前
个整数指明父节点,最后一个整数指明当前节点是如何与父节点相关的. - 对于一维数据,索引 wind 包括0和1. 0表示低通滤波器,1表示高通滤波器.
- 对于
维数据,索引 wind 包括
到
的整数. 每个整数代表一个沿每个数据方向运行的向量,它由 MapThread[Rule,{Range[0,2^n-1],Tuples[{lowpass,highpass},n]}] 确切给出. - 小波索引 wind 可以从 DiscreteWaveletData 对象 dwd 中提取小波系数. 具有以下说明:
-
dwd[wind] 提取对应于 wind 的系数 dwd[{wind1,wind2,…}] 提取数个小波系数阵列 dwd[wpatt] 提取所有系数,其 wind 与模式 wpatt 匹配 dwd[All] 提取所有系数 dwd[Automatic] 提取在逆变换中使用的系数 - 缺省情况下,系数是按 {wind1->coef1,wind2->coef2,…} 规则列表返回.
- dwd[…,{form1,form2,…}] 可以用于控制输出形式. 可能的 formi 包括:
-
"Rules" 规则 {wind1->…} "Values" 只有系数 "Inverse" 逆变换的个别系数 "ListPlot" 一维系数的简单列表图 "MatrixPlot" 二维系数的简单矩阵图 "Image" 图像系数的图像 "Sound" 声音系数的声音对象 "SampledSoundList" 声音系数的样本声音对象 - 可以从 DiscreteWaveletData[…]["prop"] 中获得完整的属性.
- DiscreteWaveletData[…]["Properties"] 给出可用于 DiscreteWaveletData 对象的属性列表.
- 与变换系数相关的属性包括:
-
"BasisIndex" 逆变换中使用的小波索引 "Dimensions" 给出小波系数组的维数 "EnergyFraction" 系数组中的能量部分 "Padding" 用于变换数据的填充 "Refinement" 执行的精细度的数 "Transform" 小波变换的类型 {"TreeView",pos} 分解的树视图,具有 TreePlot 中的 pos "Wavelet" 使用的小波族 "WaveletIndex" 所有小波索引 windi 的列表 - 与输入数据相关的属性包括:
-
"DataDimensions" 原数据的维数 "DataChannels" 数据通道数 "DataWrapper" 重建后应用于数据的包装函数 - 包变换独有的属性包括:
-
"BestBasisBlockView" 最佳基的块网格视图 "BestBasisCostValues" 每个小波系数的损失值 "BestBasisCostTable" 格式化的损失值表格 - 从 WaveletThreshold 中可用于 dwd 的属性包括:
-
"ThresholdValues" 每个小波系数的阈值 
"ThresholdTable" 格式化的阈值 
- 可以给出下列选项:
-
Method Automatic 所使用的方法 Padding "Periodic" 如何把数据扩展到边界之外 SampleRate Automatic 声音数据的采样率 WorkingPrecision MachinePrecision 内部计算所用的精度 - Padding 的设置与 ArrayPad 中的相同.
范例
打开所有单元 关闭所有单元基本范例 (3)
从小波变换中获得 DiscreteWaveletData:
dwd = DiscreteWaveletTransform[Range[10]]DiscreteWaveletData 代表一个变换系数的树:
dwd["TreeView"]dwd["EnergyFraction"]在其它小波函数中使用 DiscreteWaveletData 对象:
dwd = DiscreteWaveletTransform[DiamondMatrix[32], Automatic, 3]WaveletMatrixPlot[dwd] 在分层网格布局中绘制矩阵小波系数:
WaveletMatrixPlot[dwd]InverseWaveletTransform[DiscreteWaveletData[{{0, 1} -> {-1, 3, 0, 0}, {0} -> {0, 2, 2, 0}}, HaarWavelet[], StationaryWaveletTransform]]范围 (25)
基本用途 (8)
从诸如 DiscreteWaveletTransform 的小波变换中获得 DiscreteWaveletData:
dwd = DiscreteWaveletTransform[{1, 2, 3, 4}]dwd["TreeView"]Normal[dwd]InverseWaveletTransform 作用于 DiscreteWaveletData:
dwd = StationaryWaveletTransform[{1, 2, 3, 4}, HaarWavelet[]]对于诸如 HaarWavelet[] 的正交小波,逆变换是确切的:
InverseWaveletTransform[dwd]dwd = StationaryWaveletTransform[{1, 1, 3, 1}]dwd[{{0}, {1}}]dwd[{0, _}]dwd[{0, _}, "Values"]dwd[{0, _}, "ListPlot"]dwd = DiscreteWaveletTransform[RandomReal[1, 12], DaubechiesWavelet[]]{dwd["Transform"], dwd["Refinement"], dwd["Wavelet"]}dwd["Dimensions"]dwd["Properties"]在其它小波函数中使用 DiscreteWaveletData:
data = Table[Sin[x + x^2], {x, 0, 10, 0.1}];dwd = DiscreteWaveletTransform[data]InverseWaveletTransform[dwd]//ListLinePlot{WaveletListPlot[dwd], WaveletScalogram[dwd]}使用小波函数变换 DiscreteWaveletData:
data = Table[Sin[20Log[x]], {x, 1, 10, 0.1}];dwd1 = DiscreteWaveletTransform[data, Automatic, 3]dwd2 = WaveletThreshold[dwd1]dwd3 = WaveletMapIndexed[c Rescale[c], dwd1]Table[WaveletListPlot[dwd, PlotLayout -> "CommonYAxis", PlotRange -> 2], {dwd, {dwd1, dwd2, dwd3}}]从给出系数阵列的规则列表中构建一个 DiscreteWaveletData:
dwd = DiscreteWaveletData[{{0, 0} -> {-1}, {1, 0} -> {6}}]dwd["TreeView"]Normal[dwd]使用指定的小波和正变换的 DiscreteWaveletData:
dwd = DiscreteWaveletData[{{1} -> {2, 0, 0, 0, -3}, {0, 0, 1} -> {4, -2, 5}}, SymletWavelet[2], DiscreteWaveletTransform]InverseWaveletTransform[dwd]获取系数 (7)
dwd = DiscreteWaveletPacketTransform[{1, 3, 0, 0}]dwd["WaveletIndex"]dwd["TreeView"]不同的小波索引指标从 DiscreteWaveletData 中提取系数阵列:
dwd = DiscreteWaveletPacketTransform[{1, 3, 0, 0}]dwd[{1}]dwd[{{0}, {1}}]dwd[{_, 1}]dwd[{{1}, {_, Except[1]}}]dwd[Automatic]dwd[All]dwd = DiscreteWaveletTransform[RandomReal[1, 6]]dwd[{{0}, {1}}, "Rules"]dwd[{{0}, {1}}, "Values"]dwd[{{0}, {1}}, "ListPlot"]dwd[{{0}, {1}}, "Inverse"]dwd[{{0}, {1}}, {"Rules", "Inverse", "ListPlot"}]dwd = DiscreteWaveletTransform[CrossMatrix[3]]dwd[{{0}, {1}, {2}}, "MatrixPlot"]dwd[{{0}, {1}, {2}}, {"Inverse", "MatrixPlot"}]获得图像小波系数,缺省情况下是应用了 ImageAdjust 的 Image 对象:
dwd = DiscreteWaveletTransform[[image]]dwd[{_}, "Image"]dwd[{_}, {"Image", "ImageFunction" -> Identity}]缺省情况下,图像小波系数是以每个色彩通道的像素值的阵列给出:
ArrayQ[dwd[{0}, "Values"], _, NumberQ]Dimensions[dwd[{0}, "Values"]]以 Audio 对象形式获取音频小波系数:
dwd = DiscreteWaveletTransform[Audio["ExampleData/rule30.wav"]]dwd[{1}, "Audio"]以 Audio 对象形式对单个系数进行逆变换:
dwd[{0, 0, 0, 0, 0}, {"Audio", "Inverse"}]获得作为 Sound 对象的声音小波系数:
dwd = DiscreteWaveletTransform[ExampleData[{"Sound", "Tuba"}]]dwd[{1}, "Sound"]作为 Sound 对象的单个系数的逆变换:
dwd[{1}, {"Sound", "Inverse"}]设置系数 (6)
构建 List 输入的 DiscreteWaveletData:
dwd = LiftingWaveletTransform[Range[8], DaubechiesWavelet[3]]wrules = dwd[All]对于 List 系数,输入类型为 {wind1->coef1,…} 的规则列表 wrules:
newdwd = DiscreteWaveletData[wrules, DaubechiesWavelet[3]]InverseWaveletTransform[newdwd]Image 输入:
dwd = LiftingWaveletTransform[[image], CDFWavelet[], 3]irules = dwd[All, {"Image", "ImageFunction" -> Identity}]对于 Image 系数,输入类型为 {wind1->icoef1,…} 的规则列表 irules:
newdwd = DiscreteWaveletData[irules, CDFWavelet[]]InverseWaveletTransform[newdwd]Sound 输入:
snd = Sound[SampledSoundList[Table[Sin[1000 t], {t, 0, 1, 1. / 255}], 250]]dwd = LiftingWaveletTransform[snd, SymletWavelet[2], 2]srules = dwd[All, "Sound"];对于 Sound 系数,输入类型为 {wind1->scoef1,…} 的规则列表 srules:
newdwd = DiscreteWaveletData[srules, SymletWavelet[2], SampleRate -> 250]InverseWaveletTransform[newdwd]DiscreteWaveletData[{{0} -> Range[10], {1} -> Range[10]}]ListLinePlot[InverseWaveletTransform[%]]DiscreteWaveletData[{{0} -> Range[10], {1} -> Range[10]}, Automatic, LiftingWaveletTransform]ListLinePlot[InverseWaveletTransform[%]]dwd = DiscreteWaveletTransform[Range[8]]DiscreteWaveletData[Normal[dwd], Automatic, DiscreteWaveletTransform]DiscreteWaveletData[Normal[dwd], Automatic, DiscreteWaveletTransform, {8}]DiscreteWaveletData[{{1} -> [image], {3} -> [image], {2} -> [image], {0, 1} -> [image], {0, 3} -> [image], {0, 2} -> [image]}]ImageAdjust@InverseWaveletTransform[%]属性 (4)
dwd = StationaryWaveletPacketTransform[RandomReal[1, 8], DaubechiesWavelet[], Full]{dwd["Transform"], dwd["Wavelet"], dwd["Padding"]}{dwd["Refinement"], Max[Length /@ dwd["WaveletIndex"]]}dwd = DiscreteWaveletPacketTransform[{6, 1, 4, 0}]dwd["WaveletIndex"]Table[dwd[{"TreeView", pos}], {pos, {Top, Left, Center}}]dwd["Dimensions"]dwd = WaveletBestBasis[DiscreteWaveletPacketTransform[{1, 2, 3, 3}]]dwd["BasisIndex"]{dwd["TreeView"], dwd["BestBasisBlockView"]}dwd["EnergyFraction"]由 WaveletBestBasis 计算的基的每个系数阵列的损失值:
dwd["BestBasisCostValues"]data = [image];dwd = DiscreteWaveletTransform[data]{dwd["DataDimensions"], dwd["DataChannels"]}dwd["DataWrapper"]{Head[data], Head[InverseWaveletTransform[dwd]]}选项 (7)
Method (1)
Method 的设置与小波变换的方法相同:
lwd = LiftingWaveletTransform[Range[8], Method -> "IntegerLifting"]生成 DiscreteWaveletData 以执行 "IntegerLifting":
ilwd = DiscreteWaveletData[Normal[lwd], Method -> "IntegerLifting"]InverseWaveletTransform[ilwd]Padding (2)
Padding 的设置与 ArrayPad 的方法相同,包括 "Periodic":
ArrayPad[{a, b, c}, 4, "Periodic"]ArrayPad[{a, b, c}, 4, "Reversed"]ArrayPad[{a, b, c}, 4, "ReversedNegation"]ArrayPad[{a, b, c}, 4, "Reflected"]ArrayPad[{a, b, c}, 3, "ReflectedDifferences"]ArrayPad[{a, b, c}, 4, "ReversedDifferences"]ArrayPad[{a, b, c}, 3, "Extrapolated"]默认情况下,使用 Padding->"Periodic" 选项:
DiscreteWaveletData[{{0} -> Range[10]}, Padding -> "Periodic"] == DiscreteWaveletData[{{0} -> Range[10]}]SampleRate (1)
对于 Sound 输入,自动计算 SampleRate:
snd = Sound[SampledSoundList[Table[Cos[100 t^2], {t, 0, 1, 1. / 255}], 250]]dwd = LiftingWaveletTransform[snd, Automatic, 2];默认情况下,从第一个系数规则提取 SampleRate:
srules = dwd[All, "Sound"];First[srules]InverseWaveletTransform[DiscreteWaveletData[srules]]明确指定 SampleRate:
InverseWaveletTransform[DiscreteWaveletData[srules, SampleRate -> 250]]WorkingPrecision (3)
默认情况下,使用 WorkingPrecision->MachinePrecision:
dwd1 = DiscreteWaveletData[{{0} -> {1, 2, 3, 4}, {1} -> {1, 2, 3, 4}}]dwd2 = DiscreteWaveletData[{{0} -> {1, 2, 3, 4}, {1} -> {1, 2, 3, 4}}, WorkingPrecision -> MachinePrecision]dwd1 == dwd2dwd = Normal@DiscreteWaveletData[{{0} -> {1, 2, 3, 4}}, WorkingPrecision -> 25]当数字与0接近时,准确度对于正确数位的数目是一个较好的指标:
{Precision[dwd], Accuracy[dwd]}使用 WorkingPrecision->∞ 进行精确计算:
data = RandomInteger[10, {4}];dwd = LiftingWaveletTransform[data, WorkingPrecision -> ∞];Normal[dwd]//Simplifyndwd = DiscreteWaveletData[Normal[dwd], WorkingPrecision -> ∞];Normal[ndwd]//Simplify应用 (3)
data = ConstantArray[N@Sin[5 Range[0, 2π, (2π/1023)]], {1024}];
data = data + Transpose[data];MatrixPlot[data]dwd = LiftingWaveletTransform[data, Automatic, 8]wcoeff = dwd[Automatic];比较 data 的 ByteCount 与相应的小波系数 wcoeff:
cdata = Compress[data];
cwcoeff = Compress[wcoeff];BarChart[{(ByteCount[cdata]/1024^2), (ByteCount[cwcoeff]/1024^2)}, ChartLabels -> {"data", "wavelet coefficients"}]ndwd = DiscreteWaveletData[Uncompress[cwcoeff]]MatrixPlot[InverseWaveletTransform[ndwd]]通过把 UnitVector 设置为在细化层
的低通系数,计算尺度函数
:
j = 10;
wind = ConstantArray[0, j];dwd = DiscreteWaveletData[{wind -> Sqrt[2]^j UnitVector[4, 1]}, DaubechiesWavelet[2], LiftingWaveletTransform, Padding -> 0]ϕ = InverseWaveletTransform[dwd];Show[ListLinePlot[ϕ, PlotRange -> All, DataRange -> {0, 4}], Plot[WaveletPhi[DaubechiesWavelet[2]][x], {x, 0, 4}, PlotRange -> All, PlotStyle -> {Red, Dashed}]]通过把 UnitVector 设置为细化层
上的高通系数,计算小波函数
:
j = 10;
wind = ConstantArray[0, j];
wind[[-1]] = 1;dwd = DiscreteWaveletData[{wind -> Sqrt[2]^j UnitVector[3, 2]}, DaubechiesWavelet[2], LiftingWaveletTransform, Padding -> 0]ψ = InverseWaveletTransform[dwd];Show[ListLinePlot[-ψ, PlotRange -> All, DataRange -> {-1, 2}], Plot[WaveletPsi[DaubechiesWavelet[2]][x], {x, -1, 2}, PlotRange -> All, PlotStyle -> {Red, Dashed}]]属性和关系 (4)
DiscreteWaveletData 代表一个离散变换系数的树:
dwd = DiscreteWaveletTransform[{1, 1, 8, 1, 1, 2, 2, 1, 1}]{dwd["TreeView"], WaveletListPlot[dwd, Ticks -> Full, PlotLayout -> "CommonYAxis"]}ContinuousWaveletData 代表在一套尺度中的连续变换系数:
cwd = ContinuousWaveletTransform[{1, 1, 8, 1, 1, 2, 2, 1, 1}]{TableForm[cwd["Scales"]], WaveletScalogram[cwd, Ticks -> Full]}根据系数和属性,重构一个 DiscreteWaveletData:
dwd = LiftingWaveletTransform[{1, 2, 3, 4}, DaubechiesWavelet[2]]dwd2 = DiscreteWaveletData[Normal[dwd], dwd["Wavelet"], dwd["Transform"], dwd["DataDimensions"]]dwd3 = DiscreteWaveletData[Normal[dwd], dwd["Wavelet"]]Map[InverseWaveletTransform, {dwd, dwd2, dwd3}]dwd = DiscreteWaveletTransform[{1, 2, 3, 4}]使用 Normal:
Normal[dwd]明确地提取 All 所有系数:
dwd[All]指定匹配任意小波索引的模式 Blank[] (_):
dwd[_]dwd = DiscreteWaveletTransform[{1, 2, 3, 4}]应用 Last 于由 dwd[wind] 返回的每个规则:
Last /@ dwd[{_}]使用 Part:
dwd[{_}][[All, 2]]dwd[{_}, "Values"]可能存在的问题 (2)
最佳基损失值只适用于来自于 WaveletBestBasis 的 DiscreteWaveletData:
dwd = DiscreteWaveletPacketTransform[RandomReal[1, 6]]dwd["BestBasisCostValues"]best = WaveletBestBasis[dwd, "LogEnergy"]best["BestBasisCostValues"]dwd = DiscreteWaveletData[{{0} -> {1, 2, 3, 4}}]DiscreteWaveletData 选择一个一致的正变换来假设:
dwd["Transform"]dwd2 = DiscreteWaveletData[{{0} -> {1, 2, 3, 4}}, Automatic, DiscreteWaveletTransform]dwd2["Transform"]相关指南
-
▪
- 小波分析
文本
Wolfram Research (2010),DiscreteWaveletData,Wolfram 语言函数,https://reference.wolfram.com/language/ref/DiscreteWaveletData.html.
CMS
Wolfram 语言. 2010. "DiscreteWaveletData." Wolfram 语言与系统参考资料中心. Wolfram Research. https://reference.wolfram.com/language/ref/DiscreteWaveletData.html.
APA
Wolfram 语言. (2010). DiscreteWaveletData. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/DiscreteWaveletData.html 年
BibTeX
@misc{reference.wolfram_2026_discretewaveletdata, author="Wolfram Research", title="{DiscreteWaveletData}", year="2010", howpublished="\url{https://reference.wolfram.com/language/ref/DiscreteWaveletData.html}", note=[Accessed: 13-September-2026]}
BibLaTeX
@online{reference.wolfram_2026_discretewaveletdata, organization={Wolfram Research}, title={DiscreteWaveletData}, year={2010}, url={https://reference.wolfram.com/language/ref/DiscreteWaveletData.html}, note=[Accessed: 13-September-2026]}