# scaleSpectrum
尺度平均小波频谱
函数库: TyWavelet
# 语法
savgp = scaleSpectrum(fb, x)
savgp ,= scaleSpectrum(fb, cfs)
savgp, scidx = scaleSpectrum(___)
___ = scaleSpectrum(___; Name = Value)
# 说明
savgp = scaleSpectrum(fb,x) 返回使用 CWT 滤波器组 fb 对信号 x 进行尺度平均的小波功率谱。默认情况下,savgp 是通过对所有尺度的幅方频谱进行尺度平均得到的。示例
savgp ,= scaleSpectrum(fb,cfs) 返回 CWT 系数 cfs 的尺度平均小波频谱。
提示
使用这种语法时,尺度平均小波频谱的功率被归一化为等于滤波器组对象函数 wt 所处理的最后一个信号的方差。
savgp,scidx = scaleSpectrum(___) 也会返回计算尺度平均小波频谱的尺度指数。如果没有指定频率限制(FrequencyLimits)或周期限制(PeriodLimits),则 scidx 是一个从 1 到尺度数的向量。
___ = scaleSpectrum(___; Name=Value) 使用名称-值参数指定附加选项。这些参数可以添加到前面的任何输入语法中。例如,"Normalization", "none" 表示不对尺度平均小波频谱进行标准化处理。示例
# 示例
尺度平均小波频谱
加载一个音频文件,其中包含 Handel 的 "Hallelujah Chorus" 片段,采样频率为 8192 Hz。
using TyWavelet
using TyBase
pkg_dir = pkgdir(TyWavelet)
source_path = pkg_dir * "/examples/Resources/handel.mat"
load(source_path)
创建一个可应用于信号的 CWT 滤波器组。使用默认的 Morse 小波。
fb = cwtfilterbank(; SignalLength=length(y), SamplingFrequency=Fs)
计算尺度平均小波频谱。
savg, = scaleSpectrum(fb, y)
savg = 1×73113 Matrix{Float64}:
9.44408e-8 9.41629e-8 9.36788e-8 9.31229e-8 9.26607e-8 … 2.38429e-7 2.42231e-7 2.44514e-7 2.45509e-7
归一化尺度平均小波频谱
载入 Ulysses 号航天器从世界标准时间 1993 年 12 月 4 日 21:00 至 1994 年 5 月 24 日 12:00 在太阳南极上空每小时记录的太阳磁场强度时间序列。有关该数据的完整描述,请参见 [2] 第 218-220 页。创建一个可应用于数据的 CWT 滤波器组。
using TyWavelet
using TyBase
using TyMath
pkg_dir = pkgdir(TyWavelet)
source_path = pkg_dir * "/examples/Resources/solarMFmagnitudes.mat"
y = load(source_path)
fb = cwtfilterbank(; SignalLength=length(sm), SamplingPeriod=cwtHr(1))
使用默认值获得信号的尺度平均小波频谱。默认情况下,scaleSpectrum 将尺度平均小波频谱的功率归一化,以等于信号的方差。验证频谱之和是否等于信号的方差。
savg, = scaleSpectrum(fb, sm)
[var(sm) sum(savg)]
1×2 Matrix{Float64}:
0.044753 0.0447421
获取信号的尺度平均小波频谱,但将功率归一化为概率密度函数。验证总和是否等于 1。
savg, = scaleSpectrum(fb, sm; Normalization="pdf")
sum(savg)
round(sum(savg); digits=4)
1.0
如果将 SpectrumType 设置为 "density",scaleSpectrum 会根据 Normalization(归一化)的值对小波频谱的加权积分进行归一化处理。在这种情况下,频谱模拟的是概率密度函数,其积分在数值上等于归一化指定的值。
要确认频谱积分等于 1,首先要获得 "density" 频谱类型和 "pdf" 归一化的尺度平均小波频谱。
savg, = scaleSpectrum(fb, sm; SpectrumType="density", Normalization="pdf")
默认情况下,滤波器组使用解析 Morse(3,60)小波。获取小波的可接纳常数,并使用梯形法则对小波频谱进行数值积分。确认积分等于 1。
ga = 3
tbw = 60
be = tbw / ga
anorm = 2 * exp(be / ga * (1 + (log(ga) - log(be))))
cPsi = anorm^2 / (2 * ga) .* (1 / 2)^(2 * (be / ga) - 1) * gamma(2 * be / ga)
rawScales, = scales(fb)
numInt = 2 / cPsi * 1 / length(sm) * trapz(1:length(savg), savg)[1]
round(numInt; digits=4)
numInt = 1.0
# 输入参数
fb - 连续小波变换滤波器组cwtfilterbank 对象
连续小波变换 (CWT) 滤波器组,指定为 cwtfilterbank 对象。
x - 输入数据向量
输入数据,指定为实值或复值矢量。输入数据 x 必须至少有四个样本。
cfs - CWT 系数矩阵 | 3-D 阵列
CWT 系数,指定为二维矩阵或 M × N × 2 数组。cfs 应该是 CWT 滤波器组 fb 的 wt 对象函数的输出结果。
# 名称-值参数
以 Name1=Value1,...,NameN=ValueN 的形式指定可选的参数对,其中 Name 是参数名,Value 是相应的值。名称-值参数必须出现在其他参数之后,但参数对的顺序并不重要。
示例: scaleSpectrum(fb, x; FrequencyLimits = [0.2 0.4]) 返回在频率限制 [0.2 0.4] 上的标度平均小波频谱。
Normalization — 归一化"var"(默认) | "pdf" | "none"
尺度平均小波频谱的归一化,包括 "归一化 "和以下一项:
- "var" - 归一化为等于时间序列 x 的方差。如果您提供 cfs 输入,scaleStrum 函数将使用滤波器组对象函数 wt 处理的最后一个时间序列的方差;
- "pdf" - 归一化等于 1;
- "none" - 不进行归一化处理。
SpectrumType - 小波频谱类型"power"(默认) | "density"
要返回的小波频谱类型,包括 "SpectrumType"(频谱类型)和 "power"(功率)或 "density"(密度)。如果指定为 "power",所有尺度上的小波频谱的尺度平均和将根据 "Normalization" 中指定的值进行归一化。如果指定为 "density",所有尺度上的小波频谱加权积分将按照 "Normalization" 中指定的值进行归一化处理。
FrequencyLimits - 频率限制二元向量
对幅度平方频谱图进行平均处理的频率限制,由 "FrequencyLimits" 和一个元素不递减的双元素向量组成。FrequencyLimits 值必须介于 fb 的 centerFrequencies 对象函数返回的最低和最高中心频率之间。最高频率与最低频率之比的二进制对数必须大于或等于
如果指定限制的区域超出了滤波器组 fb 的频率限制,scaleSpectrum 会将计算截断到 centerFrequencies(fb) 指定的范围内。FrequencyLimits 不能完全超出奈奎斯特范围。
PeriodLimits - 周期限制二元向量
幅值平方频谱平均的周期限制,包括 "PeriodsLimits" 和一个持续时间不递减的双元素向量。PeriodLimits 的元素在类型和格式上与滤波器组 fb 的 "SamplingPeriod" 属性一致。采样周期值必须介于 fb 的 centerPeriods 对象函数返回的最低和最高中心周期之间。最小周期与最大周期之比的二进制对数必须小于或等于
如果指定限制的区域超出了滤波器组 fb 的周期限制,scaleSpectrum 会将计算截断到 centerPeriods(fb) 指定的范围内。SamplingPeriod 不能完全超出奈奎斯特范围 [
# 输出参数
savgp - 尺度平均小波功率谱实值矢量 | 实值三维阵列
尺度平均的小波功率谱,以实值向量或实值三维数组的形式返回。如果 x 是实值,则 savgp 是 1 × N 向量,其中 N 是 x 的长度;如果 x 是复值,则 savgp 是 1 × N × 2 数组,其中第一页是正尺度的尺度平均小波频谱(解析部分或逆时针分量),第二页是负尺度的尺度平均小波频谱(反解析部分或顺时针分量)。
scidx - 尺度指数向量
计算尺度平均小波频谱的尺度指数,以向量形式返回。如果没有指定 "FrequencyLimits" 或 "PeriodLimits",则 scidx 是一个从 1 到尺度数的向量。
# 参考文献
[1] Torrence, Christopher, and Gilbert P. Compo. “A Practical Guide to Wavelet Analysis.” Bulletin of the American Meteorological Society 79, no. 1 (January 1, 1998): 61–78. https://doi.org/10.1175/1520-0477(1998)079<0061:APGTWA>2.0.CO;2.
[2] Percival, Donald B., and Andrew T. Walden. Wavelet Methods for Time Series Analysis. Cambridge Series in Statistical and Probabilistic Mathematics. Cambridge ; New York: Cambridge University Press, 2000.
[3] Lilly, J.M., and S.C. Olhede. “Higher-Order Properties of Analytic Wavelets.” IEEE Transactions on Signal Processing 57, no. 1 (January 2009): 146–60. https://doi.org/10.1109/TSP.2008.2007607.