DiscreteWaveletPacketTransform[data]
给出一个 data 阵列的离散小波包变换(DWPT).
DiscreteWaveletPacketTransform[data,wave]
给出使用小波 wave 的离散小波包变换.
DiscreteWaveletPacketTransform[data,wave,r]
给出使用 r 精细度的离散小波包变换.
DiscreteWaveletPacketTransform
DiscreteWaveletPacketTransform[data]
给出一个 data 阵列的离散小波包变换(DWPT).
DiscreteWaveletPacketTransform[data,wave]
给出使用小波 wave 的离散小波包变换.
DiscreteWaveletPacketTransform[data,wave,r]
给出使用 r 精细度的离散小波包变换.
更多信息和选项
- DiscreteWaveletPacketTransform 给出一个 DiscreteWaveletData 对象.
- DiscreteWaveletData dwd 的属性可以用 dwd["prop"] 找到,可以用 dwd["Properties"] 找到可用属性的列表.
- DiscreteWaveletPacketTransform 是 DiscreteWaveletTransform 的一个泛化,其中计算小波系数的全树.
- data 可为以下任意形式:
-
list 任意阶数的数值数组 image 任意 Image 对象 audio Audio 或抽样 Sound 对象 - 由此产生的小波系数是与输入 data 有同样深度的阵列.
- 可能的小波 wave 包括:
-
BattleLemarieWavelet[…] 基于 B 样条的 Battle‐Lemarié 小波 BiorthogonalSplineWavelet[…] B 样条为基础的小波 CoifletWavelet[…] Daubechies 小波的对称变量 DaubechiesWavelet[…] Daubechies 小波 HaarWavelet[…] 典型的哈尔(Haar)小波 MeyerWavelet[…] 在频域定义的小波 ReverseBiorthogonalSplineWavelet[…] 基于 B 样条的小波(对偶和原小波的逆) ShannonWavelet[…] 基于 Sinc 函数的小波 SymletWavelet[…] 最不不对称的正交小波 - 默认的 wave 是 HaarWavelet[].
- 精细度 r 越高,可以解析更大规模的特征.
- 默认的精细度 r 是由
给出,其中
是 data 的最小维数. - 精细度为 Full,r 由
给出. - 在第
层的小波系数树包括粗系数
和细节系数
,其中
代表输入 data. - 正变换由
、
、
和
给出. - 逆变换由
给出.
是低通滤波器系数,
是高通滤波器系数,它们是为每个小波族定义的.
和
的维数是由
给出,其中
是输入 data 维数,fl 是对应的 wspec 的滤波器长度.- 可以使用下面选项:
-
Method Automatic 使用的方法 Padding "Periodic" 如何延伸超越边界的数据 WorkingPrecision MachinePrecision 内部计算中使用的精确度 - Padding 的设置与 ArrayPad 中的相同.
- InverseWaveletTransform 给出逆变换.
- 默认情况下,InverseWaveletTransform 使用由 dwd["BasisIndex"] 表示的系数来重构. 使用 WaveletBestBasis 计算和设置一个最优基.
范例
打开所有单元 关闭所有单元基本范例 (3)
dwd = DiscreteWaveletPacketTransform[{0, 0, 1, 0, 0}]由此生成的 DiscreteWaveletData 代表小波系数的全树:
dwd["TreeView"]InverseWaveletTransform[dwd]a = Audio["ExampleData/rule30.wav"]dwd = DiscreteWaveletPacketTransform[a, Automatic, 2]dwd[All, "Audio"]InverseWaveletTransform[dwd]变换一个 Image 对象:
dwd = DiscreteWaveletPacketTransform[[image], Automatic, 2]dwd[All, "Image"]InverseWaveletTransform[dwd]范围 (34)
基本用途 (5)
有用的属性可以从 DiscreteWaveletData 对象中提取:
dwd = DiscreteWaveletPacketTransform[RandomReal[1, {16}], DaubechiesWavelet[4], 2]dwd["Properties"]dwd["DataDimensions"]dwd["Dimensions"]使用 Normal 明确获取所有小波系数:
dwd = DiscreteWaveletPacketTransform[Range[5]];Normal[dwd]使用 All 作为一个参数获取所有系数:
dwd[All]使用 Automatic 只获得用于逆变换的系数:
dwd[Automatic]使用 "TreeView" 或 "IndexMap" 找到哪个小波系数可用:
dwd = DiscreteWaveletPacketTransform[Range[5]];dwd["TreeView"]dwd["IndexMap"]dwd[{0}]dwd[{0, 0}]dwd[{{0}, {0, 1}}]dwd[{_}]dwd[{{_, 0}, {_, 1}}]使用 WaveletBestBasis 计算小波包系数的最优基:
dwd = DiscreteWaveletPacketTransform[Table[Sin[x ^ 2], {x, 0, 10, 0.2}]];dwd = WaveletBestBasis[dwd]dwd["BestBasisBlockView"]dwd["BasisIndex"]在诸如 WaveletListPlot 的函数中,默认情况下,使用已计算的最佳基:
WaveletListPlot[dwd]data = Table[Sin[x ^ 2] + RandomReal[{-0.2, 0.2}], {x, 0, 10, 0.02}];ListLinePlot[data]dwd1 = DiscreteWaveletPacketTransform[data, DaubechiesWavelet[4], 2];WaveletListPlot[dwd1, PlotLayout -> "CommonYAxis"]dwd2 = DiscreteWaveletPacketTransform[data, DaubechiesWavelet[4], 3];WaveletListPlot[dwd2, PlotLayout -> "CommonYAxis"]小波族 (10)
data = Table[Sin[x ^ 2], {x, 0, 10, 0.02}];dwd1 = DiscreteWaveletPacketTransform[data, DaubechiesWavelet[4], 3];
dwd2 = DiscreteWaveletPacketTransform[data, SymletWavelet[4], 3];{WaveletListPlot[dwd1], WaveletListPlot[dwd2]}data = Table[4 Exp[-100 (t - 0.5) ^ 2] + Sin[5Pi t], {t, 0, 1, 0.01}];ListLinePlot[data]HaarWavelet (默认的):
dwd = DiscreteWaveletPacketTransform[data, HaarWavelet[], 3];WaveletListPlot[dwd, All, PlotLayout -> "CommonYAxis", Filling -> Axis]data = Table[4 Exp[-100 (t - 0.5) ^ 2] + Sin[5Pi t], {t, 0, 1, 0.01}];dwd = DiscreteWaveletPacketTransform[data, DaubechiesWavelet[2], 3];WaveletListPlot[dwd, All, PlotLayout -> "CommonYAxis", Filling -> Axis]data = Table[4 Exp[-100 (t - 0.5) ^ 2] + Sin[5Pi t], {t, 0, 1, 0.01}];dwd = DiscreteWaveletPacketTransform[data, BattleLemarieWavelet[3], 3];WaveletListPlot[dwd, All, PlotLayout -> "CommonYAxis", Filling -> Axis]data = Table[4 Exp[-100 (t - 0.5) ^ 2] + Sin[5Pi t], {t, 0, 1, 0.01}];dwd = DiscreteWaveletPacketTransform[data, BiorthogonalSplineWavelet[4, 2], 3];WaveletListPlot[dwd, All, PlotLayout -> "CommonYAxis", Filling -> Axis]data = Table[4 Exp[-100 (t - 0.5) ^ 2] + Sin[5Pi t], {t, 0, 1, 0.01}];dwd = DiscreteWaveletPacketTransform[data, CoifletWavelet[2], 3];WaveletListPlot[dwd, All, PlotLayout -> "CommonYAxis", Filling -> Axis]data = Table[4 Exp[-100 (t - 0.5) ^ 2] + Sin[5Pi t], {t, 0, 1, 0.01}];dwd = DiscreteWaveletPacketTransform[data, MeyerWavelet[3], 3];WaveletListPlot[dwd, All, PlotLayout -> "CommonYAxis", Filling -> Axis]ReverseBiorthogonalSplineWavelet:
data = Table[4 Exp[-100 (t - 0.5) ^ 2] + Sin[5Pi t], {t, 0, 1, 0.01}];dwd = DiscreteWaveletPacketTransform[data, ReverseBiorthogonalSplineWavelet[4, 2], 3];WaveletListPlot[dwd, All, PlotLayout -> "CommonYAxis", Filling -> Axis]data = Table[4 Exp[-100 (t - 0.5) ^ 2] + Sin[5Pi t], {t, 0, 1, 0.01}];dwd = DiscreteWaveletPacketTransform[data, ShannonWavelet[8], 3];WaveletListPlot[dwd, All, PlotLayout -> "CommonYAxis", Filling -> Axis]data = Table[4 Exp[-100 (t - 0.5) ^ 2] + Sin[5Pi t], {t, 0, 1, 0.01}];dwd = DiscreteWaveletPacketTransform[data, SymletWavelet[3], 3];WaveletListPlot[dwd, All, PlotLayout -> "CommonYAxis", Filling -> Axis]矢量数据 (6)
使用 WaveletListPlot 在共同横轴上绘制系数:
dwd = DiscreteWaveletPacketTransform[Table[Sin[x ^ 2], {x, 0, 10, 0.02}], Automatic, 3];WaveletListPlot[dwd, FrameTicks -> Full]WaveletListPlot[dwd, PlotLayout -> "CommonYAxis"]利用 WaveletScalogram 把系数可视化为关于时间和精细层的函数:
dwd = DiscreteWaveletPacketTransform[Table[Sin[20x] + Sin[10x], {x, 1, 10, 0.01}]];WaveletScalogram[dwd, All]数据的最佳树表示的 WaveletScalogram:
WaveletScalogram[WaveletBestBasis[dwd]]data = Table[1, {x, 0, 10, 0.02}];ListLinePlot[data]dwd = DiscreteWaveletPacketTransform[data, DaubechiesWavelet[4], 3];WaveletListPlot[dwd, All, PlotLayout -> "CommonYAxis"]data = Table[(-1)^n, {n, 80}];ListLinePlot[data]只有第一个细节系数 {1} 和它的粗子系数 {1,0,0,…} 不小:
dwd = DiscreteWaveletPacketTransform[data, Automatic, 3];WaveletListPlot[dwd, All, PlotLayout -> "CommonYAxis"]data = Table[Piecewise[{{1, 1 < x < 3.1}}, 0], {x, 0, 4, 0.02}];ListLinePlot[data]dwd = DiscreteWaveletPacketTransform[data, Automatic, 3];WaveletListPlot[dwd, {0..}, FrameTicks -> Full]WaveletListPlot[dwd, Except[{0..}]]data = Table[Piecewise[{{5, n <= 30}, {2 + (-1)^n, Inequality[30, Less, n, LessEqual, 60]}, {5, 60 < n}}], {n, 90}];ListLinePlot[data, PlotRange -> {0, 5}]dwd = DiscreteWaveletPacketTransform[data, Automatic, 3];WaveletListPlot[dwd, {0..}, FrameTicks -> Full]第一个细节系数 {1} 与它的粗子系数 {1,0,…} 代表振荡:
WaveletListPlot[dwd, {1, 0...}, FrameTicks -> Full]WaveletListPlot[dwd, All, PlotLayout -> "CommonYAxis"]矩阵数据 (5)
dwd = DiscreteWaveletPacketTransform[(| | | | | |
| - | - | - | - | - |
| 0 | 0 | 1 | 0 | 0 |
| 0 | 1 | 1 | 1 | 0 |
| 1 | 1 | 1 | 1 | 1 |
| 0 | 1 | 1 | 1 | 0 |
| 0 | 0 | 1 | 0 | 0 |)]dwd[{"TreeView", Center}]InverseWaveletTransform[dwd]//Chop//MatrixForm使用 WaveletMatrixPlot 可视化不同的小波系数:
dwd = DiscreteWaveletPacketTransform[DiamondMatrix[32], Automatic, 2]WaveletMatrixPlot[dwd, ImageSize -> Small]最佳树表述的 WaveletMatrixPlot:
WaveletMatrixPlot[WaveletBestBasis[dwd], ImageSize -> Small]Tuples[{0, 1}, 2] /. {0 -> "lowpass", 1 -> "highpass"}FromDigits[#, 2]& /@ Tuples[{0, 1}, 2]{lp, hp} = Map[Last, WaveletFilterCoefficients[HaarWavelet[], {"PrimalLowpass", "PrimalHighpass"}], {2}]Apply[KroneckerProduct, Tuples[{lp, hp}, 2], {1}]Map[MatrixPlot, %]step[{a_, b_, c_, d_}] :=
ArrayFlatten[{{ConstantArray[a, {3, 3}], ConstantArray[b, {3, 5}]}, {ConstantArray[c, {5, 3}], ConstantArray[d, {5, 5}]}}];MatrixPlot[step[{0, 1, 0, 1}], FrameTicks -> False]所有水平和对角细节系数,小波索引 {___,2|3,___} 为零:
WaveletMatrixPlot[DiscreteWaveletPacketTransform[step[{0, 1, 0, 1}]], ImageSize -> Small]MatrixPlot[step[{0, 0, 1, 1}], FrameTicks -> False]所有垂直和对角细节系数,小波索引 {___,1|3,___} 为零:
WaveletMatrixPlot[DiscreteWaveletPacketTransform[step[{0, 0, 1, 1}]], ImageSize -> Small]MatrixPlot[Reverse@IdentityMatrix[8], FrameTicks -> False]所有垂直和水平细节系数,小波索引 {___,1|2,___} 为零:
WaveletMatrixPlot[DiscreteWaveletPacketTransform[Reverse@IdentityMatrix[8]], ImageSize -> Small]阵列数据 (2)
data = RandomReal[1, {16, 16, 16}];dwd = DiscreteWaveletPacketTransform[data, Automatic, 2]dwd["BestBasisBlockView"]data = CrossMatrix[All, {8, 8, 8}];Graphics3D[{Red, Cuboid /@ Position[data, 1]}]dwd = DiscreteWaveletPacketTransform[data, Automatic, 2]Table[i -> Graphics3D[{If[Positive[Extract[dwd[i][[1, 2]], #]], Red, Green], Cuboid[#]}& /@ Position[dwd[i][[1, 2]], u_ /; Abs[u] > 0], PlotRange -> Automatic], {i, Cases[dwd["IndexMap"], {___, 0}]}]Total[Flatten[data]^2] == Total[Flatten[dwd[Automatic][[All, 2]]]^2]图像数据 (3)
变换一个 Image 对象:
img = Image[DiamondMatrix[All, {64, 64}]]dwd = DiscreteWaveletPacketTransform[img, HaarWavelet[], 3]逆变换产生一个重构的 Image 对象:
InverseWaveletTransform[dwd]dwd = DiscreteWaveletPacketTransform[[image], HaarWavelet[], 2];Dimensions[{1, 1} /. dwd[{1, 1}]]获取以 Image 对象表示的所有系数:
dwd[All, {"Image", ImageSize -> 80}]获取原 Image 对象,没有调整色彩级别:
dwd[All, {"Image", "ImageFunction" -> Identity, ImageSize -> 80}]以 Image 对象的形式获得 {0,1} 系数的逆变换:
dwd[{0, 1}, {"Image", "Inverse"}]dwd = DiscreteWaveletPacketTransform[[image], HaarWavelet[], 4];best = WaveletBestBasis[dwd]使用 WaveletImagePlot 在分层网格中绘制最优树:
WaveletImagePlot[best, ImageSize -> Medium]声数据 (3)
变换一个 Sound 对象:
snd = ExampleData[{"Sound", "Apollo11ReturnSafely"}]dwd = DiscreteWaveletPacketTransform[snd]逆变换产生一个重构的 Sound 对象:
InverseWaveletTransform[dwd]dwd = DiscreteWaveletPacketTransform[ExampleData[{"Sound", "PianoScale"}]];Dimensions[{1, 1} /. dwd[{1, 1}]]以 Sound 对象的形式给出系数 {1,1}:
dwd[{1, 1}, "Sound"]以 Sound 对象的形式给出系数 {1,1} 的逆变换:
dwd[{1, 1}, {"Sound", "Inverse"}]dwd = DiscreteWaveletPacketTransform[ExampleData[{"Sound", "Clarinet"}]];best = WaveletBestBasis[dwd]使用 MenuView 浏览最优树系数:
MenuView[best[Automatic, "Sound"]]推广和延伸 (3)
DiscreteWaveletPacketTransform 可用于符号量的阵列:
dwd = DiscreteWaveletPacketTransform[{a, b, c, d}, WorkingPrecision -> ∞];Normal[dwd]//SimplifyInverseWaveletTransform[dwd]//Simplifydwd = DiscreteWaveletPacketTransform[{1, 2, 5, 2}, WorkingPrecision -> 20];Normal[dwd]data = Exp[I RandomReal[1, 4]];dwd = DiscreteWaveletPacketTransform[data]dwd[Automatic]选项 (5)
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"]data = Table[UnitStep[x], {x, -2, 2, 4 / 255}];ListLinePlot[data]dwt1 = DiscreteWaveletPacketTransform[data, DaubechiesWavelet[2], 3];WaveletListPlot[dwt1]"Extrapolated" 填充减少非周期数据的边界效应:
dwt2 = DiscreteWaveletPacketTransform[data, DaubechiesWavelet[2], 3, Padding -> "Extrapolated"];WaveletListPlot[dwt2]WorkingPrecision (3)
默认情况下,使用 WorkingPrecision->MachinePrecision:
data = RandomInteger[1, {10}];dwd1 = DiscreteWaveletPacketTransform[data]dwd2 = DiscreteWaveletPacketTransform[data, WorkingPrecision -> MachinePrecision]dwd1 == dwd2data = {0, 0, 1, 1};dwd = Normal@DiscreteWaveletPacketTransform[data, Automatic, 2, WorkingPrecision -> 25]随着数字接近于零,Accuracy 可以更好地表明正确的数字:
{Precision[dwd], Accuracy[dwd]}使用 WorkingPrecision->∞ 进行确切计算:
data = RandomInteger[10, {4}];Normal@DiscreteWaveletPacketTransform[data, WorkingPrecision -> ∞]//Simplify应用 (3)
最佳树分析 (2)
dwd = DiscreteWaveletPacketTransform[Table[Piecewise[{{5, n <= 30}, {2 + (-1)^n, Inequality[30, Less, n, LessEqual, 60]}, {5, 60 < n}}], {n, 90}]];dwd["BestBasisBlockView"]best = WaveletBestBasis[dwd]best["BestBasisBlockView"]WaveletListPlot[best, PlotLayout -> "CommonYAxis"]dwd = DiscreteWaveletPacketTransform[[image], Automatic];WaveletImagePlot[dwd, ImageSize -> Small]best = WaveletBestBasis[dwd, "ShannonEntropy"]WaveletImagePlot[best, ImageSize -> Small]压缩 (1)
data = DiskMatrix[All, {12, 12}];MatrixPlot[data, FrameTicks -> None]dwd = WaveletBestBasis[DiscreteWaveletPacketTransform[data]];WaveletMatrixPlot[dwd, ImageSize -> Small]Count[Last /@ dwd[Automatic], Except[0.], {3}]Count[data, Except[0], {2}]Times@@Dimensions[data]属性和关系 (11)
DiscreteWaveletPacketTransform 计算小波系数的全树:
dwpt = DiscreteWaveletPacketTransform[{1, 1, 3, 1, 1}];dwpt[{"TreeView", Left}]DiscreteWaveletTransform 计算系数全树的子集:
dwt = DiscreteWaveletTransform[{1, 1, 3, 1, 1}];dwt[{"TreeView", Left}]DiscreteWaveletPacketTransform 系数在每个精细度层上长度减半:
Normal[DiscreteWaveletPacketTransform[{1, 2, 3, 4}]]Normal[DiscreteWaveletPacketTransform[{2, 3, 4, 1}]]StationaryWaveletPacketTransform 系数具有与原始数据一样的长度:
Normal[StationaryWaveletPacketTransform[{1, 2, 3, 4}]]Normal[StationaryWaveletPacketTransform[{2, 3, 4, 1}]]dwt = DiscreteWaveletTransform[(| | |
| - | - |
| a | b |
| c | d |), WorkingPrecision -> ∞];Simplify[dwt[Automatic]]dwpt = DiscreteWaveletPacketTransform[{a, b, c, d}, WorkingPrecision -> ∞];Simplify[dwpt[Automatic]]Flatten[Sort[Last /@ dwt[Automatic]]] == Flatten[Sort[Last /@ dwpt[Automatic]]]默认的精细度由 Min[Round[Log2[Min[Dimensions[data]]]],4] 给出:
data = RandomReal[1, {100}];r = Min[Round[Log2[Min[Dimensions[data]]]], 4]DiscreteWaveletPacketTransform[data] == DiscreteWaveletPacketTransform[data, Automatic, r]data = RandomReal[1, {100, 10, 10}];r = Min[Round[Log2[Min[Dimensions[data]]]], 4]DiscreteWaveletPacketTransform[data] == DiscreteWaveletPacketTransform[data, Automatic, r]data = RandomReal[1, {100}];dwt = DiscreteWaveletPacketTransform[data, Padding -> 0.];Norm[data] == Norm[Flatten[Last /@ dwt[Automatic]]]data = RandomReal[1, {100}];dwt = DiscreteWaveletPacketTransform[data, BiorthogonalSplineWavelet[2, 4], Padding -> 0.];Norm[data]Norm[Flatten[Last /@ dwt[Automatic]]]data = RandomReal[1, {64}];dwt = DiscreteWaveletPacketTransform[data, HaarWavelet[], Full];r = dwt["Refinement"]dwt[ConstantArray[0, {r}]]%[[1, 2, 1]] / (Sqrt[2])^rMean[data]data = Table[DiscreteDelta[n], {n, -2, 2}]dwd = DiscreteWaveletPacketTransform[data];dwd["TreeView"]data1 = InverseWaveletTransform[dwd, Automatic, {0, 0}]data2 = InverseWaveletTransform[dwd, Automatic, {0, 1}]data3 = InverseWaveletTransform[dwd, Automatic, {1, 0}]data4 = InverseWaveletTransform[dwd, Automatic, {1, 1}]data1 + data2 + data3 + data4HaarWavelet 对应于平均(低通滤波器)和差分(高通滤波器):
low[v_] := Partition[v, 2].{(1/Sqrt[2]), (1/Sqrt[2])}
high[v_] := Partition[v, 2].{(1/Sqrt[2]), -(1/Sqrt[2])}HaarWaveletTransform[v_] := {{0} -> low[v], {1} -> high[v]};HaarWaveletTransform[{a, b, c, d}]比较 DiscreteWaveletPacketTransform:
DiscreteWaveletPacketTransform[{a, b, c, d}, HaarWavelet[], 1, WorkingPrecision -> ∞][All]f2d[fx_, fy_] := Composition[Map[fy, #]&, Map[fx, #]&]low[v_] := Partition[v, 2].{(1/Sqrt[2]), (1/Sqrt[2])}
high[v_] := Partition[v, 2].{(1/Sqrt[2]), -(1/Sqrt[2])}data = Table[Sin[x y], {x, -2, 2, 4 / 63}, {y, -2, 2, 4 / 63}];Table[MatrixPlot[f2d[fx, fy][data], PlotLabel -> {fx, fy}, FrameTicks -> None], {fx, {low, high}}, {fy, {low, high}}]//Flatten使用 HaarWavelet 比较 DiscreteWaveletPacketTransform:
dwd = DiscreteWaveletPacketTransform[data, HaarWavelet[], 1];Table[MatrixPlot[Last[p], PlotLabel -> First[p], FrameTicks -> None], {p, Normal[dwd]}]dwds = Map[DiscreteWaveletPacketTransform, ColorSeparate[[image]]]w = Image[Table[First[{0} /. Normal[t]], {t, dwds}], Interleaving -> False]比较原始图像的 DiscreteWaveletPacketTransform 的 {0} 系数:
dwd = DiscreteWaveletPacketTransform[[image]];{0} /. dwd[All, {"Image", "ImageFunction" -> Identity}]ImageSubtract[w, %]可能存在的问题 (1)
data = RandomReal[1, {10}];dwd1 = DiscreteWaveletPacketTransform[data, DaubechiesWavelet[4], Padding -> "Fixed"];{Norm[data]^2, Norm[Flatten[Last /@ dwd1[Automatic]]]^2}dwd2 = DiscreteWaveletPacketTransform[data, DaubechiesWavelet[4], Padding -> 0];{Norm[data]^2, Norm[Flatten[Last /@ dwd2[Automatic]]]^2}文本
Wolfram Research (2010),DiscreteWaveletPacketTransform,Wolfram 语言函数,https://reference.wolfram.com/language/ref/DiscreteWaveletPacketTransform.html (更新于 2017 年).
CMS
Wolfram 语言. 2010. "DiscreteWaveletPacketTransform." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2017. https://reference.wolfram.com/language/ref/DiscreteWaveletPacketTransform.html.
APA
Wolfram 语言. (2010). DiscreteWaveletPacketTransform. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/DiscreteWaveletPacketTransform.html 年
BibTeX
@misc{reference.wolfram_2026_discretewaveletpackettransform, author="Wolfram Research", title="{DiscreteWaveletPacketTransform}", year="2017", howpublished="\url{https://reference.wolfram.com/language/ref/DiscreteWaveletPacketTransform.html}", note=[Accessed: 10-September-2026]}
BibLaTeX
@online{reference.wolfram_2026_discretewaveletpackettransform, organization={Wolfram Research}, title={DiscreteWaveletPacketTransform}, year={2017}, url={https://reference.wolfram.com/language/ref/DiscreteWaveletPacketTransform.html}, note=[Accessed: 10-September-2026]}