Engee 文档

vmd

通过变分模式分解。

库::`工程师`

语法

函数调用

  • [参数:imf]=vmd(<参数:x>>) -返回信号的分解 [参数:x] 根据变化模式。 使用功能 vmd 将复杂信号分解和简化为执行希尔伯特频谱分析所必需的有限数量的本征模式函数(IMF)函数。

  • vmd(___;<参数:out>=:情节) -将原始信号、IMF和残差信号作为单独的图形绘制在一个图中。

争论

输入参数

# x 是具有均匀采样的时域信号

+ 向量资料

Details

具有均匀采样的时域信号,定义为实数值的向量。

名称-值输入参数

将可选参数对指定为 名称,值,在哪里 姓名 -参数的名称,以及 价值 -适当的值。 名称-值参数应该放在其他参数之后,但对的顺序无关紧要。

使用逗号分隔名称和值,以及 姓名 把它放在引号里。

# 绝对稳定 — 模式收敛的绝对误差

+ 5e-6 (默认情况下)| 正实标量

Details

模式收敛的绝对误差,作为正实标量给出。 论点 绝对,绝对 它是停止优化的标准之一,即当连续两次迭代中IMF收敛性的均值二次绝对改进变得小于该值时,优化停止 绝对,绝对.

# 相对性 — 模式收敛的相对误差

+ 绝对稳定*1e3 (默认情况下)| 正实标量

Details

模式收敛的相对误差,作为正实标量给出。 论点 相对性,相对性 它是停止优化的标准之一,即当两个连续迭代中IMF收敛的平均相对改进变得小于该值时,优化停止 相对性,相对性.

当同时满足条件时,优化过程停止。 [参数:绝对平衡]相对性,相对性.

# 最大值 — 最大优化迭代次数

+ 500 (默认情况下)| 正整数标量

Details

最大优化迭代次数,设为正整数标量。 论点 最大值,最大值 它是停止优化的标准之一,即当迭代次数超过值时,优化停止 最大值,最大值.

论点 最大值,最大值 它只能用正整数指定。

# NumIMFs — 提取的IMFs数量

+ 5 (默认情况下)| 正整数标量

Details

提取的IMFs的数量,设置为正整数标量

# 中央频率 — IMF的初始中心频率

+ 向量资料

Details

IMF的初始中心频率,以长度向量的形式给出 [参数:NumIMFs]. 向量的值必须在 [0, 0.5] 一个周期/倒计时,表示真实频率在 ,在哪里 -采样率。

# 初始值 — 初始基金组织

+ 零矩阵 (默认情况下)| 实矩阵

Details

初始IMFs,作为实矩阵给出。 行对应于时间计数,列对应于模式。

# 惩罚因子 — 罚则

+ 1000 (默认情况下)| 正实标量

Details

的惩罚系数,设为正实标量。 这个参数决定了恢复的准确性。 使用较低的惩罚因子值来实现更严格的数据准确性。

# 初始 — 初始拉格朗日乘数

+ 零的复向量 (默认情况下)| 复向量

Details

初始拉格朗日乘子,定义为复数向量。 频域初始拉格朗日乘子的范围为 [0, 0.5] 循环/倒计时。 乘数确保符合恢复限制。 乘法器的长度取决于输入信号的大小。

# LMUpdateRate — 拉格朗日乘数更新率

+ 0.01 (默认)| 真正的标量

Details

每次迭代时拉格朗日乘数的更新率,作为正实标量给出。 更高的速度导致更快的收敛,但增加了优化过程陷入局部最优的可能性。

# InitializeMethod 是 一种中心频率初始化方法

+ "山峰" (默认)| "随机" | "网格"

Details

的中心频率初始化方法,定义为 "山峰", "随机""网格".

  • "山峰" -将中心频率初始化为频域信号的峰值(默认情况下)。 如果 [参数:NumIMFs] 超过频域峰值的数量,函数 vmd 随机初始化剩余的中心频率;

  • "随机" -将中心频率初始化为均匀分布在区间内的随机数 [0, 0.5] 循环/倒数;

  • "网格" -将中心频率初始化为区间内均匀采样的网格 [0, 0.5] 循环/倒计时。

# 显示 — 切换命令窗口中的进度显示

+ 错误0 (默认情况下)| 真的1

Details

在命令窗口中切换进度显示,设置为 真的 (或 1)或 错误 (或 0). 如果指定 真的 该函数将每20次迭代显示模态和中心频率的平均绝对和相对改进,以及显示有关最终停止的信息。

设置参数 展览及展览 意义 1 显示数据,或 0 来隐藏数据。

# — 输出数据的类型

+ :无 (默认情况下)| :剧情

Details

输出数据的类型:

  • :无 -函数返回数据;

  • :剧情 -函数返回一个图形。

输出参数

# 国际货币基金组织 — 分解函数到内部模式

+ 矩阵

Details

将函数分解为固有模式函数(IMF),作为矩阵返回. 每一个 国际货币基金组织 它是一个具有幅度和频率调制的信号,具有正的和缓慢变化的包络。 每种模式都有一个瞬时频率,它不会下降,变化缓慢,并且以一个中心值为中心。 使用方法 国际货币基金组织 以应用Hilbert-Huang变换进行频谱信号分析。

论点 国际货币基金组织 它作为一个矩阵返回,其中的每一列是 国际货币基金组织 如果 [参数:x] -矢量。

# 剩余 — 残差信号

+ 列向量

Details

返回的残差信号作为列向量。 论点 残差 表示原始信号的一部分 [参数:x],不被函数分解 vmd.

论点 残差 它作为列向量返回,如果 [参数:x] -矢量。

# 资料 — 其他诊断信息

+ 结构

Details

作为具有以下字段的结构返回的其他诊断信息:

  • [医]出口 -完成标志。 意义 0 指示算法在达到最大迭代次数时停止。 意义 1 指示算法在达到绝对和相对容差时停止。;

  • 中央频率 -中央基金组织频率;

  • 数字,数字 -迭代总数;

  • 绝对进步 -最后两次迭代之间IMF收敛的RMS绝对改进;

  • 相对改进 -最后两次迭代之间IMF收敛的平均相对改善;

  • 拉格朗日倍增器 -上一次迭代时频域中的拉格朗日乘数。

例子:

分段信号的变分模式分解

Details

我们将生成一个分段复合信号,由二次趋势、线性调频和余弦组成,在两个恒定频率之间有一个急剧的过渡。 .

信号以频率采样 1 kHz期间 1 几秒钟。 我们将为每个单独的分量和复合信号绘制图表.

fs = 1e3
t = 0:1/fs:1-1/fs

t_half = length(t) ÷ 2
t_first_half = t[1:t_half]
t_second_half = t[t_half+1:end]

quadratic_component = 6 .* t.^2
chirp_component = cos.(4π .* t .+ 10π .* t.^2)

cos_first_half = cos.(60π .* t_first_half)
cos_second_half = cos.(100π .* (t_second_half .- 10π))

cos_component = vcat(cos_first_half, cos_second_half)

x = quadratic_component .+ chirp_component .+ cos_component

p1 = plot(t, vcat(zeros(t_half), cos_second_half),
          xlabel="Time (s)",
          ylabel="Cosine",
          legend=false)

p2 = plot(t, vcat(cos_first_half, zeros(length(t_second_half))),
          xlabel="Time (s)",
          ylabel="Cosine",
          legend=false)

p3 = plot(t, chirp_component,
          xlabel="Time (s)",
          ylabel="Chirp",
          legend=false)

p4=plot(t,quadratic_component,
          xlabel="时间",
          ylabel="二次趋势",
          传说=错误)

p5=情节(t,x,
          xlabel="时间",
          ylabel="信号",
          传说=错误,
          线宽=2)

l=@布局[a{0.333w} b{0.333w} c{0.333w}
             d{0.333w} e{0.667w}]

情节(p1,p2,p3,p4,p5,
     布局=l,
     大小=(800,600))

vmd 1

让我们在变分模式中进行扩展,以将四个分解函数计算为内部模式。 四个不同的信号分量进行恢复。

import EngeeDSP.Functions: vmd

imf, res = vmd(x, "NumIMFs", 4)

p1 = plot(t, imf[:, 1],
          ylabel = "IMF1",
          showlegend = false,
          grid = true,
          xlabel = "Time (s)")

p2 = plot(t, imf[:, 2],
          ylabel = "IMF2",
          showlegend = false,
          grid = true,
          xlabel = "")

p3 = plot(t, imf[:, 3],
          ylabel = "IMF3",
          showlegend = false,
          grid = true,
          xlabel = "Time (s)")

p4 = plot(t, imf[:, 4],
          ylabel = "IMF4",
          showlegend = false,
          grid = true,
          xlabel = "Time (s)")

我们将通过添加模式函数和其余部分来恢复信号。 让我们建立一个图表,并比较原始和恢复的信号。

sig = sum(imf, dims=2) + res

p5 = plot(t, sig,
          linewidth = 1.5,
          label = "Reconstructed signal",
          xlabel = "Time (s)",
          ylabel = "Signal",
          legendfontsize = 7,
          legend = (0.45, 0.5))

plot!(p5, t, x,
      linestyle = :dash,
      linewidth = 2,
      label = "Original signal")

情节(p1,p2,p3,p4,p5,
     布局=l,
     大小=(800,600))

vmd 2

让我们计算原始信号和恢复信号之间差异的范数。

import EngeeDSP.Functions: norm

norm(x-sig, Inf)
0.0

此外

分解函数到内部模式

Details

功能 vmd 分解信号 由少量 窄带内部模式(IMF):

IMFs具有以下特点:

  1. 每一种时尚 它是具有振幅和频率调制形式的信号

    哪里 -时尚阶段,嗯 -它的信封。

  2. 这些模式有积极的和缓慢变化的信封。

  3. 每种模式都有一个瞬时频率 ,不减少,变化缓慢,以一个中心值为中心 .

变模分解法同时计算所有振荡模式及其中心频率. 这个过程是找到一组值 其中最小化带约束的变分问题。

优化设计

Details

来计算 该过程找到了扩展拉格朗日的最佳

标量产品在哪里 和第二规范 . 正则化成员 包括以下步骤:

  1. 使用希尔伯特变换来计算与每个模式相关联的分析信号,其中 表示卷积。 因此,每种模式都具有纯正谱。

  2. 通过将解析信号乘以复数指数解调到基带。

  3. 通过计算解调解析信号的第二梯度范数的平方来估计带宽。

成员名单 确保遵守限制 通过施加二次惩罚并包括拉格朗日乘数。 论点 [参数:惩罚因子] 衡量成员的相对贡献 与会员比较 .

该算法使用[1]中描述的交替方向乘法器方法求解优化问题。

算法

功能 vmd 通过重构计算频域中的IMF 使用函数 . 为了消除边缘效应,该算法扩展了信号,在每一侧镜像其长度的一半。

[优化]中介绍的拉格朗日乘子具有傅里叶变换 . 拉格朗日乘子向量的长度等于扩展信号的长度。

除非参数中另有规定 [参数:初始值],IMFs初始化为零。 初始化参数 [参数:中心频率] 使用参数中指定的方法之一 [参数:初始值]. 功能 vmd 迭代更新mods,直到满足以下条件之一:

在第3次迭代时,算法执行以下步骤:

  1. 他正在经历 信号模式(使用参数指定 [参数:NumIMFs])来计算:

    1. 每种模式的频域信号使用

      哪里 -傅立叶变换 -th模式,计算于 -第次迭代。

    2. -第三中心频率 使用

  2. 更新拉格朗日乘数使用 ,在哪里 -拉格朗日乘数的更新率,使用参数设置 [参数:LMUpdateRate].

文学作品

  1. Boyd,Stephen,Neal Parikh,Eric Chu,Borja Peleato和Jonathan Eckstein。 "通过乘法器的交替方向方法进行分布式优化和统计学习。"_foundations and Trends®In机器学习._第3卷,第1期,2011年,第1-122页。

  2. Dragomiretskiy,Konstantin和Dominique Zosso。 "变分模式分解。"_ieee®关于信号处理的事务。_卷。 62,编号3,2014,第531-534页。

  3. 穆迪,乔治B.和罗杰G.马克。 "MIT-BIH心律失常数据库的影响。"_ieee Engineering in Medicine And Biology杂志。_卷。 20,第3号,2001年5月至6月,第45-50页。