2026a

# iwsst


逆小波同步压缩变换

函数库: TyWavelet

# 语法

xrec = iwsst(sst)
xrec = iwsst(sst, f, freqrange)
xrec = iwsst(sst, iridge)
xrec = iwsst(___, wav)
xrec = iwsst(sst, iridge; NumFrequencyBins = numBins)
xrec = iwsst(sst, iridge, wav; NumFrequencyBins = numBins)

# 说明

xrec = iwsst(sst) 反转输入的同步压缩变换 sst,并返回向量 xrec 中的反转。要获得 sst 输入,请使用 wsst 函数。iwsst 函数假设您使用分析 Morlet 小波获得 sst。示例

注意

小波变换不保留非零均值。在逆同步压缩变换之后,必须将原始信号均值加回来。


xrec = iwsst(sst, f, freqrange) 反转频率矢量 f 中包含的指定频率范围 frequence 的同步压缩变换。频率矢量 f 是 wsst 的输出。示例


xrec = iwsst(sst, iridge) 沿着索引列矢量 iridge 指定的时间-频率脊逆同步压缩变换。iridge 是 wsstridge 的输出。外部参照输出的大小与 iridge 相同。示例


xrec = iwsst(___, wav) 使用 wav 指定的分析小波来逆同步压缩变换。该小波必须与 wsst 中使用的小波相同。您可以包含以前语法中的任何输入参数。示例


xrec = iwsst(sst, iridge; NumFrequencyBins = numBins) 返回带有 numBins 的逆同步压缩变换,每个 iridge 索引 bin 两侧都包含许多额外的频率 bin。示例

# 示例

Chirp 的逆同步压缩变换

使用默认值获得二次 chirp 的小波同步压缩变换。然后利用逆小波同步压缩变换对信号进行重构。

using TyWavelet
using TyBase
dir = pkgdir(TyWavelet) * "/examples/Resources/quadchirp.mat"
load(dir)
sst, = wsst(quadchirp)
xrec = iwsst(sst)
Chirp 的同步压缩和逆同步压缩变换

获得以 1000 Hz 采样的二次 Chirp 的小波同步压缩变换。然后重建 Chirp。

加载 Chirp 并获得同步压缩变换。

using TyWavelet
using TyPlot
using TyBase
dir = pkgdir(TyWavelet) * "/examples/Resources/quadchirp.mat"
load(dir)
sstchirp, = wsst(quadchirp; ExtendSignal=true)

提取最大能量时频脊,并沿脊重建信号模式。

_, iridge = wsstridge(sstchirp)
xrec = iwsst(sstchirp, iridge)

绘制并放大原始信号和重建信号。

plot(tquad, xrec, "r")
hold("on")
plot(tquad, quadchirp, "b--")
xlabel("Time")
ylabel("Amplitude")
ylim(-1.5, 1.5)
legend("Reconstruction", "Original")
grid("on")
title("Reconstruction of Chirp Along Maximum Time-Frequency Ridge")
xlim(1.96, 2.04)
频率范围内的逆同步压缩变换

获得双分量信号指定频率范围的逆同步压缩变换。输入是幅度调制信号和频率调制信号的组合。

创建信号。

using TyWavelet
using TyPlot
t = 0:0.001:0.1
x1 =
    (2 .+ 0.5 .* cos.(2 * pi * 10 .* t)) .*
    cos.(2 * pi * 200 .* t .+ 10 .* sin.(2 * pi * 5 .* t))
x2 = cos.(2 * pi * 50 .* t)
sig = x1 .+ x2

获得小波同步压缩变换,并绘制得到的两个频率分量。

sst, f = wsst(sig, 1000; ExtendSignal=true)
contour(t, f, abs.(sst))
grid("on")
title("Wavelet Synchrosqueezed Transform")
ylabel("Frequency")
xlabel("Time")
hold("on")
plot(t, 140 .* ones(size(t)), "r--")
plot(t, 260 .* ones(size(t)), "r--")

获得140 Hz 至260 Hz 频率的逆同步压缩变换。绘制结果。

xrec = iwsst(sst, f, [140, 260])
subplot(2, 1, 1)
plot(t, x1)
title("Original Signal")
subplot(2, 1, 2)
plot(t, xrec, "r")
title("Reconstructed Signal")
语音信号的同步压缩和逆同步压缩变换

利用凸点小波获得语音样本的小波同步压缩变换和逆同步压缩变换。

加载语音信号,得到同步压缩变换和逆同步压缩变换。

using TyWavelet
using TyMath
using TyPlot
using TyBase
dir = pkgdir(TyWavelet) * "/examples/Resources/mtlb.mat"
load(dir)
dt = 1 / Fs
t = 0:dt:(length(mtlb) * dt - dt)
Txmtlb, = wsst(mtlb, "bump")
xrec = iwsst(Txmtlb, "bump")

获得原始波形和重建波形之间的差的 L-无穷大范数。绘制结果。

Linf = norm(abs.(mtlb - xrec), Inf)
plot(t, mtlb)
hold("on")
xlabel("Seconds")
ylabel("Amplitude")
plot(t, xrec, "r")
title(
    "Reconstruction of Wavelet Synchrosqueezed Transform\nLargest Absolute Difference:$(round(Linf,digits=2))",
)
Chirp 中使用指定二进制数的同步压缩变换

这个例子展示了如何使用指定数量的二次 Chirp 频率仓来逆小波同步压缩变换。Chirp 的采样频率为 1000 Hz。

using TyWavelet
using TyPlot
using TyBase
dir = pkgdir(TyWavelet) * "/examples/Resources/quadchirp.mat"
load(dir)
sstchirp, = wsst(quadchirp; ExtendSignal=true)

使用 iridge 索引每侧的 10 个仓提取最大能量时频脊,并沿着脊重建信号模式。

_, iridge = wsstridge(sstchirp)
xrec = iwsst(sstchirp, iridge; NumFrequencyBins=10)

绘制原始信号和重建信号。

plot(tquad, xrec, "r")
hold("on")
plot(tquad, quadchirp, "b--")
xlabel("Time")
ylabel("Amplitude")
ylim(-1.5, 1.5)
legend("Reconstruction", "Original")
grid("on")
title("Reconstruction of Chirp Along Maximum Time-Frequency Ridge")

# 输入参数

sst - 同步压缩变换
矩阵

同步压缩变换,指定为矩阵。sst 是 wsst 函数的输出。

f - 同步压缩变换频率
向量

对应于同步压缩变换行的同步压缩变换频率,指定为向量。频率向量中的元素数量等于 sst 输入中的行数量。如果指定 f,则还必须指定 frexrange。

freqrange - 频率范围
向量

返回逆同步压缩变换值的频率范围。freqrange 的值必须在频率f的值的范围内。freqrange 中的第一个和第二个元素定义了频率范围的开始和结束,其中该范围内的频率值必须是正的并且严格递增。如果指定 frexrange ,则还必须指定 f。

iridge - 时频脊行列指数
向量或矩阵

指定为向量或矩阵的同步压缩变换的时频脊行索引。iridge 是 wsstridge 函数的输出。如果 iridge 是一个矩阵,iwsst 沿着 iridge 的第一列逆同步压缩变换。然后,它沿着 iridge 图像的后续列进行迭代重建。iridge 和外部参照输出的大小相同。

wav - 解析小波
"amor"(默认) | "bump"

用于计算逆同步压缩变换的分析小波,指定为以下之一:

用于计算同步压缩变换的分析小波,指定为以下之一:

  • "amor" - 解析 Morlet 小波
  • "bump" - Bump 小波

在重建中必须使用与计算同步压缩变换 sst 相同的小波。

numBins - 附加频带数
16(默认) | 正整数

在每个 iridge 索引频带两侧增加的频带数,以正整数表示。如果附加频带数超过了特定时间步长内可用的频带数,iwsst 会在第一个或最后一个频带处截断重建。默认值为 16,是默认的每个倍频程声部数的一半。

要指定这个参数,还需要指定 iridge,它是 wsstridge 的输出结果。如果指定了频响数,就不能再指定频率 f 和频率范围 freqrange。

# 输出参数

xrec — 逆同步压缩变换
向量或矩阵

逆同步压缩变换,以矢量或矩阵形式返回。如果未指定 iridge 输入,则 xrec 是与 sst 具有相同行数的列矢量。如果指定 iridge 输入,则外部参照的大小与 iridge 的大小相同。

# 参考文献

[1] Daubechies, I., J. Lu, and H. T. Wu. "Synchrosqueezed Wavelet Transforms: an Empirical Mode Decomposition-like Tool." Applied and Computational Harmonic Analysis, Vol. 30, Number 2, 2011, pp. 243–261.

[2] Thakur, G., E. Brevdo, N. S. Fučkar, and H. T. Wu. "The Synchrosqueezing algorithm for time-varying spectral analysis: robustness properties and new paleoclimate applications." Signal Processing, Vol. 93, Number 5, 2013, pp. 1079–1094.

# 另请参阅

wsst | wsstridge