信号分析中的经验模态分解和希尔伯特变换

简介: 信号分析中的经验模态分解(EMD) 和希尔伯特变换(HT) 是处理非线性、非平稳信号的强大工具。它们共同构成了希尔伯特-黄变换(Hilbert-Huang Transform, HHT) 的核心。

信号分析中的经验模态分解(EMD) 和希尔伯特变换(HT) 是处理非线性、非平稳信号的强大工具。它们共同构成了希尔伯特-黄变换(Hilbert-Huang Transform, HHT) 的核心。

1. 经验模态分解 (EMD)

EMD的终极目标是将一个复杂的信号自动分解为一系列本质模态函数(Intrinsic Mode Functions, IMFs)。IMFs是满足以下两个条件的函数:

  1. 极值点与过零点数量相等或最多相差一个
  2. 在任意时间点,由局部极大值定义的包络线和由局部极小值定义的包络线的均值为零

EMD算法步骤(筛分过程 - Sifting Process):

  1. 识别极值点: 找到原始信号 $x(t)$ 的所有局部极大值和局部极小值。
  2. 构造包络线: 分别用三次样条插值法连接所有极大值点形成上包络线 $$e_{\text{max}}(t)$$,连接所有极小值点形成下包络线 $e_{\text{min}}(t)$。
  3. 计算均值包络线: $$m_1(t) = \frac{e_{\text{max}}(t) + e_{\text{min}}(t)}{2}$$
  4. 提取中间信号: $h_1(t) = x(t) - m_1(t)$
  5. 判断是否为IMF: 检查 $h_1(t)$ 是否满足IMF的两个条件。
    • 如果满足,则 $c_1(t) = h_1(t)$ 就是第一个IMF。
    • 如果不满足,则将 $h_1(t)$ 作为新的原始信号,重复步骤1-4,直到满足条件为止。
  6. 分离剩余分量: 从原始信号中分离出第一个IMF,得到剩余信号 $r_1(t) = x(t) - c_1(t)$。
  7. 迭代分解: 将 $r_1(t)$ 作为新的原始信号,重复上述所有步骤,依次提取出 $c_2(t), c_3(t), ..., c_n(t)$。当剩余信号 $r_n(t)$ 成为一个单调函数常量,无法再提取出IMF时,分解过程停止。

最终,原始信号被分解为:
$$x(t) = \sum_{i=1}^{n} c_i(t) + r_n(t)$$


2. 希尔伯特变换 (HT)

希尔伯特变换用于计算一个实信号的解析信号(Analytic Signal),从而得到信号的瞬时幅度瞬时相位(进而得到瞬时频率)。

对于一个实信号 $x(t)$,其希尔伯特变换 $\hat{x}(t)$ 定义为:
$$\hat{x}(t) = \mathcal{H}[x(t)] = \frac{1}{\pi} \text{P.V.} \int_{-\infty}^{\infty} \frac{x(\tau)}{t - \tau} d\tau$$
其中 P.V. 表示柯西主值。

  • 解析信号 (Analytic Signal): $z(t) = x(t) + i\hat{x}(t) = a(t)e^{i\theta(t)}$
  • 瞬时幅度 (Instantaneous Amplitude): $a(t) = \sqrt{x^2(t) + \hat{x}^2(t)}$
  • 瞬时相位 (Instantaneous Phase): $\theta(t) = \arctan\left(\frac{\hat{x}(t)}{x(t)}\right)$
  • 瞬时频率 (Instantaneous Frequency): $f(t) = \frac{1}{2\pi} \frac{d\theta(t)}{dt}$

注意:直接对任意信号求瞬时频率在物理上可能是无意义的。瞬时频率的概念只有在单分量窄带的信号中才有明确的物理意义。这正是EMD存在的价值——它将复杂信号分解为IMF,而每个IMF可以看作是单分量的,从而使得求取的瞬时频率具有物理意义。


3. EMD与希尔伯特变换的结合 (Hilbert-Huang Transform)

HHT就是先通过EMD将信号分解为IMF,再对每个IMF分量进行希尔伯特变换的过程。

对每个IMF分量 $c_i(t)$ 进行希尔伯特变换后,可以得到:
$$c_i(t) = a_i(t) \cos\left( \int \omega_i(t) dt \right)$$

原始信号可以表示为:
$$x(t) = \Re \sum_{i=1}^{n} a_i(t) e^{j \int \omega_i(t) dt}$$

由此可以得到希尔伯特谱 (Hilbert Spectrum)
$$H(\omega, t) = \sum_{i=1}^{n} a_i(t) e^{j \int \omega_i(t) dt}$$

希尔伯特谱精确地描述了幅度(或能量)在时间和频率平面上的分布,非常适合分析非平稳信号。


4. MATLAB代码

MATLAB的信号处理工具箱提供了emdhilbert函数,可以方便地进行计算。

示例1:EMD分解

% 生成一个混合非平稳信号
fs = 1000; % 采样频率 1000Hz
t = 0:1/fs:2; % 2秒时间向量

% 信号成分:一个频率变化的成分 + 一个突变成分 + 噪声
comp1 = chirp(t, 10, 1, 50, 'quadratic'); % 10Hz到50Hz的线性调频信号
comp2 = zeros(size(t));
comp2(t >= 0.5 & t < 0.8) = 1.5 * sin(2*pi*100*t(t >= 0.5 & t < 0.8)); % 100Hz的短时脉冲
comp3 = 0.1 * randn(size(t)); % 高斯白噪声

x = comp1 + comp2 + comp3; % 混合信号

% 执行EMD分解
[imf, residual] = emd(x, 'Interpolation', 'pchip', 'Display', 1);

% 绘制结果
figure;
subplot(length(imf(1,:))+2, 1, 1);
plot(t, x);
title('原始信号');
ylabel('幅度');

for i = 1:size(imf, 2)
    subplot(size(imf,2)+2, 1, i+1);
    plot(t, imf(:, i));
    title(['IMF ', num2str(i)]);
    ylabel('幅度');
end

subplot(size(imf,2)+2, 1, size(imf,2)+2);
plot(t, residual);
title('残差');
xlabel('时间 (s)');
ylabel('幅度');

示例2:希尔伯特变换与希尔伯特谱

% 继续使用上面的EMD结果
% 选择第一个IMF进行希尔伯特变换分析
imf1 = imf(:, 1);

% 计算希尔伯特变换和解析信号
analytic_signal = hilbert(imf1);
inst_amplitude = abs(analytic_signal); % 瞬时幅度
inst_phase = unwrap(angle(analytic_signal)); % 瞬时相位(解卷绕)
inst_freq = diff(inst_phase) / (2*pi) * fs; % 瞬时频率 (需要差分)

% 绘制单个IMF的希尔伯特分析结果
figure;
subplot(4, 1, 1);
plot(t, imf1);
title('IMF 1');
ylabel('幅度');

subplot(4, 1, 2);
plot(t, inst_amplitude);
title('瞬时幅度');
ylabel('幅度');

subplot(4, 1, 3);
plot(t, inst_phase);
title('瞬时相位');
ylabel('弧度');

subplot(4, 1, 4);
plot(t(2:end), inst_freq); % 频率少一个点
title('瞬时频率');
xlabel('时间 (s)');
ylabel('频率 (Hz)');
ylim([0, 100]); % 限制频率范围以便观察

% 使用内置函数绘制所有IMF的希尔伯特谱(需要安装Time-Frequency Toolbox或其他自定义函数)
% 这里提供一个简易版本的希尔伯特谱绘制
figure;
[hsp, f, t] = hilbertspectrum(imf, fs); % 需要自定义hilbertspectrum函数或使用其他工具箱
imagesc(t, f, 10*log10(hsp)); % 用分贝显示
set(gca, 'YDir', 'normal');
xlabel('时间 (s)');
ylabel('频率 (Hz)');
title('希尔伯特谱');
colorbar;

注意: MATLAB没有直接绘制Hilbert Spectrum的内置函数,你可能需要自己编写一个循环来计算每个IMF的瞬时频率和幅度,然后在时间-频率网格上进行累加。

参考代码 信号分析中用到的EMD分解和希尔伯特变换 www.youwenfan.com/contentale/55198.html


5. 优缺点与应用

优点:

  • 自适应性: EMD完全由数据驱动,基函数自适应产生,不需要预先设定基函数。
  • 有效性: 非常适合分析非线性、非平稳信号。
  • 高分辨率: 希尔伯特谱在时间和频率上都具有很高的分辨率。

缺点:

  • 端点效应: EMD在信号端点处的样条插值可能不稳定,导致分解失真。
  • 模态混叠: 不同物理过程的尺度可能出现在同一个IMF中,或者同一尺度出现在不同IMF中。
  • 计算量大: 筛分过程是迭代的,计算成本较高。
  • 理论不完善: 缺乏严格的数学理论基础。

应用:

  • 机械故障诊断: 轴承、齿轮的振动信号分析。
  • 生物医学信号处理: 脑电图(EEG)、心电图(ECG)、肌电图(EMG)分析。
  • 地球物理信号分析: 地震波、海浪、气候变化分析。
  • 金融时间序列分析: 股票价格波动分析。

为了克服EMD的缺点,后续发展出了很多变体算法,如集合经验模态分解(EEMD)互补集合经验模态分解(CEEMDAN) 等,它们通过引入噪声辅助分析,有效抑制了模态混叠问题。

相关文章
|
21天前
|
人工智能 自然语言处理 IDE
模型微调不再被代码难住!PAI和Qwen3-Coder加速AI开发新体验
通义千问 AI 编程大模型 Qwen3-Coder 正式开源,阿里云人工智能平台 PAI 支持云上一键部署 Qwen3-Coder 模型,并可在交互式建模环境中使用 Qwen3-Coder 模型。
285 109
|
20天前
|
人工智能 供应链 数据可视化
一文读懂AI引擎与Together规则引擎重塑智能决策
从1950年图灵提出人工智能设想到如今AI引擎实现自主决策,Together规则引擎正成为智能决策核心。它通过动态规划、多工具调用与持续学习机制,赋能供应链、财务、定价等场景,提升决策透明度与效率。Together助力AI引擎突破落地瓶颈,推动企业管理迈向“决策即服务”新时代。
|
16天前
|
人工智能 自然语言处理 机器人
向量化与嵌入模型:RAG系统背后的隐形英雄
传统搜索只懂字面不懂含义,向量化技术让AI真正理解语言。从日常类比到实际案例,揭秘为何向量化技术是RAG的灵魂,以及如何用最少的努力构建最聪明的AI应用。
140 10
|
15天前
|
机器学习/深度学习 人工智能 资源调度
大语言模型的核心算法——简要解析
大语言模型的核心算法基于Transformer架构,以自注意力机制为核心,通过Q、K、V矩阵动态捕捉序列内部关系。多头注意力增强模型表达能力,位置编码(如RoPE)解决顺序信息问题。Flash Attention优化计算效率,GQA平衡性能与资源消耗。训练上,DPO替代RLHF提升效率,MoE架构实现参数扩展,Constitutional AI实现自监督对齐。整体技术推动模型在长序列、低资源下的性能突破。
134 8
|
15天前
|
机器学习/深度学习 人工智能 计算机视觉
让AI真正"看懂"世界:多模态表征空间构建秘籍
本文深入解析多模态学习的两大核心难题:多模态对齐与多模态融合,探讨如何让AI理解并关联图像、文字、声音等异构数据,实现类似人类的综合认知能力。
117 6
|
18天前
|
机器学习/深度学习 人工智能 安全
大模型攻防演武录·第五名的进击
本文深度解析2025阿里天池大模型攻防竞赛全国第五名的技术实战经验,涵盖从攻击绕过到终极防御的完整策略演进,揭示AI安全攻防背后的技术逻辑与认知边界。
157 9
|
15天前
|
人工智能 架构师 程序员
学历对程序员的深远影响:2025年的现实与思考-优雅草卓伊凡
学历对程序员的深远影响:2025年的现实与思考-优雅草卓伊凡
55 12
学历对程序员的深远影响:2025年的现实与思考-优雅草卓伊凡
|
25天前
|
人工智能 分布式计算 自然语言处理
多智能体系统设计:5种编排模式解决复杂AI任务
本文探讨了多AI智能体协作中的关键问题——编排。文章指出,随着系统从单体模型向多智能体架构演进,如何设计智能体之间的通信协议、工作流程和决策机制,成为实现高效协作的核心。文章详细分析了五种主流的智能体编排模式:顺序编排、MapReduce、共识模式、分层编排和制作者-检查者模式,并分别介绍了它们的应用场景、优势与挑战。最后指出,尽管大模型如GPT-5提升了单体能力,但在复杂任务中,合理的智能体编排仍不可或缺。选择适合的编排方式,有助于在系统复杂度与实际效果之间取得平衡。
248 10
多智能体系统设计:5种编排模式解决复杂AI任务
|
21天前
|
人工智能 运维 安全
AI来了,网络安全运维还能靠“人海战术”吗?
AI来了,网络安全运维还能靠“人海战术”吗?
117 28