小波变换上的强度值是什么意思?幅度还是功率?

信息处理 傅里叶变换 功率谱密度 小波 阵列信号处理 离散小波变换
2022-01-30 23:58:03

所以当应用小波变换时,我们得到一个二维图。该二维图中的每个点都有一种颜色,显示某物的强度。但我不明白它是幅度还是功率?

3个回答

标准的连续小波变换(产生二维比例/位移图的变换)是线性算子。它产生与幅度有关的实数或复数系数,“特定位移和尺度的给定小波如何匹配信号”。这些系数(大多数情况下)与信号幅度一致

话虽如此,根据应用,将复数或正/负小波系数显示为图像是很有趣的。因此,它们被修改,使用

  • 绝对值,
  • 平方规范(能量),
  • 对数变换(和其他收缩型函数,如阈值幂律),
  • 或更复杂的“颜色图”(很多,通常取决于字段),

将价值转化为颜色,以更好地展示微妙的细节和趋势。

这有什么不同?强度和功率由一个严格单调的函数联系起来(非常复杂的 p(i)=i²);由于颜色无论如何都不是“线性的”,因此绘制功率和幅度之间的唯一区别是重新标记颜色条。

事实上,这就是我们经常使用分贝的原因,这样规模在功率和幅度上是相同的。

现在,我们不知道您的绘图工具;作为一般规则,在图像处理中,我会说强度更多的是幅度,而在物理学中,它更多的是功率,但如果你想确定,只需输入一个填充为 0.1 的数组一半,另一半为 0.2。这将立即以 100% 的把握回答您的问题。

它的绝对值是幅度。平方就是力量。但是,如果这是您遇到的情节,则无法在没有单位的情况下进行判断,因为它可以进行对数转换(分贝),从而消除了幅度和功率之间的区别(amp:log(x)-- 战俘:log(x2)=2log(x),如果自动缩放,所有强度都加倍并且颜色不会改变)。但是,对于解释小波系数,未变换的表示最准确,在学习/调试时应该首选;转换作为应用设置中的后处理步骤很有用。

我推荐这个教程互动学习也很有趣;修补x以下内容,看看它如何影响 CWT。

import numpy as np
from ssqueezepy import cwt, Wavelet, TestSignals
from ssqueezepy.visuals import plot, imshow

# configure
N = 4096
ts = TestSignals(N=N)
tmin, tmax, f = 0, 1, 64
fs = N / (tmax - tmin)

# generate signal
x = ts.make_signals(('am-cosine', dict(f=f, tmin=tmin, tmax=tmax)))
t = np.linspace(tmin, tmax, N, 0)  # ^ corresponds to TestSignals
# simpler:
# x = np.cos(2*np.pi * f * t)

# take CWT
wavelet = Wavelet(('morlet', {'mu': 5}))
Wx, scales = cwt(x, wavelet)

# find (peak) center frequencies as fraction of sampling rate (N)
psih = np.abs(wavelet.Psih())
freqs = np.round(np.array([np.argmax(p) for p in psih])/2).astype(int) * (fs / N)

# plot
plot(x, title="signal", xticks=t, xlabel="time [sec]", show=1)
kw = dict(abs=1, xlabel="time [sec]", ylabel="frequencies [Hz]",
          xticks=t, yticks=freqs)
imshow(Wx, title="abs(CWT)", **kw)
imshow(np.abs(Wx)**2, title="abs(CWT)^2", **kw)

print("Try these for `signal` like `x = ts.make_signals(signal)` "
      "(or feed your own):\n%s" % '\n'.join(ts.SUPPORTED))