给出一个 DiscreteWaveletData 对象 dwd 的逆小波变换.
InverseWaveletTransform[dwd,wave]
给出使用小波 wave 的逆变换.
InverseWaveletTransform[dwd,wave,wind]
给出来自由 wind 指定的小波系数的逆变换.
InverseWaveletTransform
给出一个 DiscreteWaveletData 对象 dwd 的逆小波变换.
InverseWaveletTransform[dwd,wave]
给出使用小波 wave 的逆变换.
InverseWaveletTransform[dwd,wave,wind]
给出来自由 wind 指定的小波系数的逆变换.
更多信息和选项
- InverseWaveletTransform 计算正向离散变换如 DiscreteWaveletTransform 等的逆变换.
- 可能的小波 wave 与正向小波变换的相同.
- 默认的 wave 是 Automatic,采用 dwd["Wavelet"].
- wind 的可能指定与 DiscreteWaveletData 所用的相同.
- 默认的 wind 是 Automatic,采用 dwd["BasisIndex"].
- InverseWaveletTransform[dwd,wave,wind] 只使用由 wind 指定的小波系数计算逆变换;其他系数设置为零.
- 逆变换通过计算来自具有小波指标 {w1,…,wn-1,wn} 的系数的小波指标 {w1,…,wn-1} 系数递归地起作用.
- 一个明确的 wind 指定必须是一致的. 一个 wind 指定是一致的,如果对于每个包括的 {w1,…,wn},没有包含 k<n 的 {w1,…,wk}.
- InverseWaveletTransform[dwd,wave,r] 可以用来对小波树的 r 个最低层进行逆变换.
- 默认层 r 由 dwd 中精细度 n 的数目给出. 在 r<n 下,返回具有 n-r 精细度的一个新的 DiscreteWaveletData 对象.
范例
打开所有单元 关闭所有单元基本范例 (3)
dwd = DiscreteWaveletTransform[{1, 1, 3, 1, 1}]InverseWaveletTransform[dwd]DiscreteWaveletData 表示修正后的小波图像系数:
dwd = DiscreteWaveletTransform[[image], CDFWavelet[]];WaveletMapIndexed[c Sharpen[c], dwd]InverseWaveletTransform[%]表示一个音频信号的 DiscreteWaveletData:
a = Audio["ExampleData/rule30.wav"];dwd = DiscreteWaveletTransform[a, Automatic, 5]InverseWaveletTransform[dwd, Automatic, {{0, 0, 0, 0, 0}, {0, 0, 0, 0, 1}}]范围 (14)
基本用途 (8)
来自任意正向离散变换的逆小波变换 DiscreteWaveletData:
transforms = {DiscreteWaveletTransform, DiscreteWaveletPacketTransform, StationaryWaveletTransform, StationaryWaveletPacketTransform, LiftingWaveletTransform};dwds = Table[trans[{2, 3, 4, 1}], {trans, transforms}]Map[InverseWaveletTransform, dwds]逆小波变换修改了 DiscreteWaveletData:
dwd = DiscreteWaveletPacketTransform[{1, 1, 3, 1}];dwds = {WaveletMapIndexed[c Rescale[c], dwd], WaveletThreshold[dwd], WaveletBestBasis[dwd]}Map[InverseWaveletTransform, dwds]dwd = DiscreteWaveletTransform[data = Cos[Range[100] ^ 2 / 100]];ListLinePlot[data]InverseWaveletTransform[dwd, Automatic, {0, 1}]//ListLinePlot逆变换使用所有匹配 {0,_} 的小波系数,并且把其它系数设置为零:
InverseWaveletTransform[dwd, Automatic, {0, _}]//ListLinePlot逆变换明确构建 DiscreteWaveletData 对象:
dwd = DiscreteWaveletData[{{1} -> {1, -1, 1, -2}, {0, 0} -> {1, 1, 1, 1}}]InverseWaveletTransform[dwd]dwd["Transform"]dwd[Except[{1} | {0, 0}]]dwd = DiscreteWaveletTransform[Range[6], DaubechiesWavelet[2]];InverseWaveletTransform[dwd, CDFWavelet[]]InverseWaveletTransform[dwd] == InverseWaveletTransform[dwd, DaubechiesWavelet[2]]dwd = DiscreteWaveletTransform[(| | | | |
| - | - | -- | -- |
| 1 | 2 | 3 | 4 |
| 2 | 4 | 6 | 8 |
| 3 | 6 | 9 | 12 |
| 4 | 8 | 12 | 16 |)];InverseWaveletTransform[dwd, Automatic, {2}]//MatrixForm对于图像数据,逆变换作为一个 Image 对象给出:
dwd = DiscreteWaveletTransform[data = [image]];img = InverseWaveletTransform[dwd, Automatic, {0, 0, 0, 0}]{ImageDimensions[img], ImageChannels[img]}{ImageDimensions[data], ImageChannels[data]}对于声音数据,逆变换作为一个 Sound 对象给出:
dwd = DiscreteWaveletTransform[Sound[«1»]];InverseWaveletTransform[dwd, Automatic, {0, 0, 1}]重构基 (6)
dwd = DiscreteWaveletTransform[{1, 1, 3, 1, 1}];dwd["BasisIndex"] 给出默认在逆变换中所用的系数:
dwd["BasisIndex"]使用 dwd["TreeView"] 来获取具有突出显示的默认基的所有系数组成的树图:
dwd["TreeView"]dwd = DiscreteWaveletPacketTransform[{1, 1, 3, 1, 1}];InverseWaveletTransform[dwd]InverseWaveletTransform[dwd, Automatic, {{0}, {1, 0}, {1, 1}}]InverseWaveletTransform[dwd, Automatic, {{0}, {1, 0}}]InverseWaveletTransform[dwd, Automatic, {0, 1}]选择标准基作为所有非包 DiscreteWaveletData 的默认值:
dwt = DiscreteWaveletTransform[Range[8]];lwt = LiftingWaveletTransform[Range[8]];swt = StationaryWaveletTransform[Range[8]];{dwt["TreeView"], lwt["TreeView"], swt["TreeView"]}dwpt = DiscreteWaveletPacketTransform[{1, 1, 3, 1, 1}];swpt = StationaryWaveletPacketTransform[{1, 1, 3, 1, 1}];{dwpt["TreeView"], swpt["TreeView"]}对于包变换数据,小波基可使用 WaveletBestBasis 改变:
dwd = DiscreteWaveletPacketTransform[{1, 1, 3, 1, 1}];best = WaveletBestBasis[dwd, "ShannonEntropy"]custom = WaveletBestBasis[dwd, {{0}, {1, 0}, {1, 1}}]{dwd["TreeView"], best["TreeView"], custom["TreeView"]}data = {9, 3, 9, 7, 6, 9, 7, 10, 8, 1};dwd = DiscreteWaveletPacketTransform[data];InverseWaveletTransform[dwd, Automatic, {{0}, {1, 0}, {1, 1}}] == InverseWaveletTransform[dwd, Automatic, {{0}, {1}}] == InverseWaveletTransform[dwd, Automatic, {{0, 1}, {0, 0}, {1}}]th = WaveletThreshold[dwd];InverseWaveletTransform[th, Automatic, {{0}, {1, 0}, {1, 1}}] == InverseWaveletTransform[th, Automatic, {{0}, {1}}] == InverseWaveletTransform[th, Automatic, {{0, 1}, {0, 0}, {1}}]推广和延伸 (2)
dwd = DiscreteWaveletTransform[RandomReal[1, 16]]获取少一个精细度的 DiscreteWaveletData:
InverseWaveletTransform[dwd, Automatic, 1]Table[Labeled[InverseWaveletTransform[dwd, Automatic, r]["TreeView"], r], {r, 1, 3}]InverseWaveletTransform[dwd] 等价于对所有精细度取逆:
InverseWaveletTransform[dwd, Automatic, 4] == InverseWaveletTransform[dwd]data = RandomComplex[1 + I, 10];dwd = StationaryWaveletTransform[data]InverseWaveletTransform 给出精确的逆变换:
InverseWaveletTransform[dwd] == data应用 (8)
小波合成 (2)
dwd[r_] := DiscreteWaveletData[{UnitVector[r, r] -> RandomReal[{-1, 1}, 2^6 - r]}, DaubechiesWavelet[], DiscreteWaveletTransform]Table[ListLinePlot[InverseWaveletTransform[dwd[r]], PlotLabel -> r], {r, 3}]dwd = DiscreteWaveletData[{{2, 2} -> RandomReal[{-1, 1}, {40, 40}]}];MatrixPlot[InverseWaveletTransform[dwd]]Table[MatrixPlot[InverseWaveletTransform[DiscreteWaveletData[{wind -> RandomReal[{-1, 1}, {20, 20}]}]], PlotLabel -> wind, FrameTicks -> None], {wind, {{0}, {0, 0}, {1, 1, 1, 1}, {3, 2, 2}}}]逆离散小波变换 (3)
dwd[c_] := DiscreteWaveletData[{{0} -> c}, Automatic, DiscreteWaveletTransform]Table[ListLinePlot[InverseWaveletTransform[dwd[c]], PlotLabel -> c, PlotRange -> {0, Sqrt[2]}], {c, {{1, 1, 1, 1}, {1, 1, 2, 2}, {1, 2, 1, 2}}}]dwd[d_] := DiscreteWaveletData[{{1} -> d, {0} -> {1, 1, 1, 1}}, Automatic, DiscreteWaveletTransform]Table[ListLinePlot[InverseWaveletTransform[dwd[d]], PlotLabel -> d, PlotRange -> {0, Sqrt[2]}], {d, {{0, 0, 0, 0}, {1, 1, 1, 1}, {0, 0, 1, 1}}}]dwd[a_] := DiscreteWaveletData[{{0, 0, 0} -> {Subscript[a, [[1]]]}, {0, 0, 1} -> {Subscript[a, [[2]]]}, {0, 1, 0} -> {Subscript[a, [[3]]]}, {0, 1, 1} -> {Subscript[a, [[4]]]}, {1, 0, 0} -> {Subscript[a, [[5]]]}, {1, 0, 1} -> {Subscript[a, [[6]]]}, {1, 1, 0} -> {Subscript[a, [[7]]]}, {1, 1, 1} -> {Subscript[a, [[8]]]}}]Table[ListLinePlot[InverseWaveletTransform[dwd[UnitVector[8, i]]]], {i, 8}]MatrixRank[Table[InverseWaveletTransform[dwd[UnitVector[8, i]]], {i, 8}]]逆稳态小波变换 (3)
dwd[c_] := DiscreteWaveletData[{{0} -> c}, Automatic, StationaryWaveletTransform]Table[ListLinePlot[InverseWaveletTransform[dwd[c]], PlotLabel -> c, PlotRange -> {0, 2}], {c, {{1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 2, 2, 2, 2}, {1, 2, 1, 2, 1, 2, 1, 2}}}]dwd[d_] := DiscreteWaveletData[{{1} -> d}, Automatic, StationaryWaveletTransform]Table[ListLinePlot[InverseWaveletTransform[dwd[d]], PlotLabel -> d], {d, {{1, 1, 1, 1, 1, 1}, {-1, -1, -1, 1, 1, 1}, {1, -1, 1, -1, 1, -1}}}]dwd[a_] := DiscreteWaveletData[{{0, 0} -> {Subscript[a, [[1]]], Subscript[a, [[2]]], Subscript[a, [[3]]], Subscript[a, [[4]]]}, {0, 1} -> {Subscript[a, [[5]]], Subscript[a, [[6]]], Subscript[a, [[7]]], Subscript[a, [[8]]]}, {1, 0} -> {Subscript[a, [[9]]], Subscript[a, [[10]]], Subscript[a, [[11]]], Subscript[a, [[12]]]}, {1, 1} -> {Subscript[a, [[13]]], Subscript[a, [[14]]], Subscript[a, [[15]]], Subscript[a, [[16]]]}}]Table[ListLinePlot[InverseWaveletTransform[dwd[UnitVector[16, i]]]], {i, 16}]MatrixRank[Table[InverseWaveletTransform[dwd[UnitVector[16, i]]], {i, 16}]]属性和关系 (7)
InverseWaveletTransform 是使用正交小波的变换的精确逆变换:
data = RandomReal[1, 10];使用正交 HaarWavelet:
Table[InverseWaveletTransform[t[data, HaarWavelet[]]] == data, {t, {DiscreteWaveletTransform, DiscreteWaveletPacketTransform, StationaryWaveletTransform, StationaryWaveletPacketTransform, LiftingWaveletTransform}}]对于非正交小波族,如 ShannonWavelet,逆变换是不精确的:
InverseWaveletTransform[DiscreteWaveletTransform[data, ShannonWavelet[3]]] == data默认情况下,dwd["BasisIndex"] 中的系数被用于逆变换中:
dwd = DiscreteWaveletTransform[{1, 1, 3, 1, 1, 1}];dwd["BasisIndex"]WaveletMapIndexed[c 0c, dwd, Except[Alternatives@@dwd["BasisIndex"]]]InverseWaveletTransform[%]InverseWaveletTransform[…,…,wind] 实际上把其它小波系数设置为零:
dwd = DiscreteWaveletTransform[RandomReal[1, 10]];InverseWaveletTransform[dwd, Automatic, {{1}, {0, 1}}]WaveletMapIndexed[c 0c, dwd, Except[{1} | {0, 1}]]InverseWaveletTransform[%]InverseWaveletTransform[…,…,wind] 从系数 wind 计算逆变换:
dwd = DiscreteWaveletTransform[{1, 1, 3, 1, 1}];InverseWaveletTransform[dwd, Automatic, {{1}, {0, 1}}]dwd[wind,"Inverse"] 分别计算每个系数的逆变换:
dwd[{{1}, {0, 1}}, "Inverse"]总和给出与 InverseWaveletTransform 相同的结果:
Total[Last /@ %]使用 ListLinePlot 来绘制单个向量系数的逆变换:
dwd = DiscreteWaveletTransform[Cos[Range[100] ^ 2 / 100]];Table[ListLinePlot[InverseWaveletTransform[dwd, Automatic, wind], PlotLabel -> wind], {wind, {{1}, {0, 1}, {0, 0, 1}}}]dwd[wind,{"Inverse","ListPlot"}] 给出每个逆变换的简单列表图线:
dwd[{{1}, {0, 1}, {0, 0, 1}}, {"Inverse", "ListPlot"}]WaveletListPlot[dwd,wind,Method->"Inverse"->True] 把逆变换绘制在一起:
WaveletListPlot[dwd, {{1}, {0, 1}, {0, 0, 1}}, Method -> "Inverse" -> True]使用 MatrixPlot 来绘制单个矩阵系数的逆变换:
dwd = DiscreteWaveletTransform[RandomReal[1, {8, 8}]];Table[MatrixPlot[InverseWaveletTransform[dwd, Automatic, wind], PlotLabel -> wind], {wind, {{1}, {2}, {3}}}]dwd[wind,{"Inverse","MatrixPlot"}] 给出每个逆变换的简单矩阵图表:
dwd[{{1}, {2}, {3}}, {"Inverse", "MatrixPlot"}]图像数据的单个系数的逆变换由 Image 对象给出:
dwd = DiscreteWaveletTransform[[image]];Table[Labeled[ImageAdjust@ImageApply[Abs, InverseWaveletTransform[dwd, Automatic, wind]], wind], {wind, {{1}, {2}, {3}}}]dwd[{{1}, {2}, {3}}, {"Inverse", {"Image", ImageSize -> 120}}]可能存在的问题 (1)
如果当 r<n 时同时包含 {a1,…,an} 和 {a1,…,ar},则一个 wind 指定是不一致的:
dwd = DiscreteWaveletPacketTransform[RandomReal[1, 4]];InverseWaveletTransform[dwd, Automatic, {{1}, {1, 0}}]dwd["TreeView"]InverseWaveletTransform[dwd, Automatic, {{1}}]InverseWaveletTransform[dwd, Automatic, {{1, 0}}]相关指南
-
▪
- 小波分析 ▪
- 信号可视化与分析 ▪
- 信号滤波与滤波器设计
文本
Wolfram Research (2010),InverseWaveletTransform,Wolfram 语言函数,https://reference.wolfram.com/language/ref/InverseWaveletTransform.html.
CMS
Wolfram 语言. 2010. "InverseWaveletTransform." Wolfram 语言与系统参考资料中心. Wolfram Research. https://reference.wolfram.com/language/ref/InverseWaveletTransform.html.
APA
Wolfram 语言. (2010). InverseWaveletTransform. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/InverseWaveletTransform.html 年
BibTeX
@misc{reference.wolfram_2026_inversewavelettransform, author="Wolfram Research", title="{InverseWaveletTransform}", year="2010", howpublished="\url{https://reference.wolfram.com/language/ref/InverseWaveletTransform.html}", note=[Accessed: 18-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_inversewavelettransform, organization={Wolfram Research}, title={InverseWaveletTransform}, year={2010}, url={https://reference.wolfram.com/language/ref/InverseWaveletTransform.html}, note=[Accessed: 18-June-2026]}