使用经验模态分解(EMD)处理振动信号,并结合样本熵进行特征提取

简介: 使用经验模态分解(EMD)处理振动信号,并结合样本熵进行特征提取

使用经验模态分解(EMD)处理振动信号,并结合样本熵进行特征提取,是机械故障诊断等领域非常有效的方法。从信号分解 → 阈值去噪 → 特征提取的完整流程

技术路线总览

从原始振动信号到最终特征向量的完整处理流程:

image.png

核心步骤详解与MATLAB实现

1. EMD分解振动信号
EMD能将复杂的振动信号自适应地分解为一系列本征模函数(IMF),这是处理非线性、非平稳振动信号的关键。

% 假设已有振动信号 data, 采样频率 fs
[imf, residue] = emd(data, 'Interpolation', 'pchip', 'Display', 0); 
% imf: 分解得到的各阶IMF分量(每一行是一个IMF)
% residue: 残余分量

2. 关键难点:阈值的确定
这是处理中的核心挑战,主要用于从IMF中分离有效成分与噪声。以下是几种实用方法:

方法 核心思想 适用场景与MATLAB关键步骤
基于能量占比法 认为前几个能量高的IMF主要包含有效信号,后续IMF主要为噪声。 最常用,适用于大多数旋转机械振动信号
计算各IMF能量:energy = sum(imf.^2, 2);
设定累积能量阈值(如85%),选择能量占比达到阈值的前k个IMF。
基于统计特性的固定阈值 每个IMF,计算其标准差,设定一个乘数(如2~3倍)作为阈值。 适合噪声特性相对稳定的场景
threshold = k * std(imf(i,:));
对小波阈值函数(如wthresh)也可调整使用。
基于排列熵的自适应阈值 排列熵能衡量序列的随机性,值越大越可能是噪声。 适合噪声复杂或信号非平稳性强的场景
计算各IMF排列熵,设定熵阈值(如0.6),高于阈值的IMF被视为需处理的噪声主导IMF。

3. 样本熵的提取
样本熵用于量化时间序列的复杂性和规律性,非常适合描述振动信号的复杂度特征。

function SampEnVal = compute_sampen(data, m, r)
    % 计算样本熵
    % data: 输入时间序列(如某个IMF)
    % m: 嵌入维度,通常取12
    % r: 相似容限,通常取0.1~0.25倍的标准差(std)

    N = length(data);
    lastrun = zeros(1, N);
    run = zeros(1, N);
    A = 0; B = 0;
    p = zeros(1, N);
    e = zeros(1, N);

    % 计算向量匹配个数
    for i = 1:N-m
        for j = i+1:N-m
            if max(abs(data(i:i+m-1) - data(j:j+m-1))) < r
                run(j) = lastrun(j) + 1;
                A = A + run(j);
                B = B + 1;
            else
                run(j) = 0;
            end
            lastrun(j) = run(j);
        end
        for j = 1:N
            lastrun(j) = 0;
            run(j) = 0;
        end
    end

    if A==0 || B==0
        SampEnVal = -log(1/((N-m)*(N-m-1)));
    else
        SampEnVal = -log(A/B);
    end
end

% 对选定的IMF计算样本熵
m = 2; % 嵌入维度
r = 0.2 * std(imf_selected); % 容限
sampen_value = compute_sampen(imf_selected, m, r);

完整MATLAB处理流程示例

将上述步骤整合,形成可直接运行或修改的完整流程:

%% 完整流程:振动信号EMD处理与样本熵特征提取
clear; clc; close all;

% 1. 加载或生成振动信号(示例:含噪声的调频调幅信号)
fs = 1000; % 采样频率
t = 0:1/fs:2-1/fs;
data = 2*sin(2*pi*20*t) .* (1+0.5*sin(2*pi*5*t)) + 0.8*sin(2*pi*80*t) + 0.5*randn(size(t));

% 2. EMD分解
[imf, residue] = emd(data, 'Interpolation', 'pchip', 'Display', 0);
num_imf = size(imf, 1);

% 3. 阈值确定(以能量占比法为例)
energy = sum(imf.^2, 2);
total_energy = sum(energy);
cum_energy_ratio = cumsum(energy) / total_energy;
threshold_ratio = 0.85; % 能量阈值设为85%
k = find(cum_energy_ratio >= threshold_ratio, 1); % 选取前k个主要IMF
imf_primary = imf(1:k, :); % 有效成分
imf_noise = imf(k+1:end, :); % 视为噪声为主的分量(可选后续处理)

% 4. 对每个主要IMF计算样本熵
m = 2; % 嵌入维度
feature_vector = zeros(1, k); % 初始化特征向量
for i = 1:k
    r = 0.2 * std(imf_primary(i, :)); % 容限
    feature_vector(i) = compute_sampen(imf_primary(i, :), m, r);
end

% 5. 可视化
figure('Position', [100, 100, 1200, 800]);
% 5.1 原始信号与IMF
subplot(3, 1, 1);
plot(t, data); title('原始振动信号'); xlabel('时间 (s)'); ylabel('幅值');
subplot(3, 1, 2);
plot(t, imf_primary'); title('主要IMF分量'); xlabel('时间 (s)'); ylabel('幅值');
% 5.2 样本熵特征
subplot(3, 1, 3);
bar(1:k, feature_vector);
title('各主要IMF的样本熵特征值'); xlabel('IMF序号'); ylabel('样本熵');
grid on;

参考代码 emd进行振动信号处理,阀值的确定,样本熵的提取 www.youwenfan.com/contentalh/54949.html

关键参数选择与物理意义

  • EMD参数:MATLAB内置emd函数通常默认设置即可。若出现过度分解,可调整'MaxNumIMF'
  • 样本熵参数
    • 嵌入维度 m:通常取1或2,表示比较向量的长度。
    • 容限 r:通常取0.1到0.25倍时间序列的标准差。r值过小会估计偏差大,过大则会丢失有效信息。建议对同类信号固定r,以保证特征可比性。
  • 物理意义:在故障诊断中,样本熵值降低可能意味着信号复杂度下降,规律性增强,有时对应于早期故障引起的周期性冲击成分增多
目录
相关文章
|
1月前
|
数据采集 人工智能 自然语言处理
舆情监控:如何让AI自动抓取新闻资讯,并生成每日摘要报告?
本文介绍一套AI驱动的自动化舆情监控方案:用站大爷隧道代理(高可用IP轮换)+ OpenClaw(零代码AI Agent)+ 大模型(智能摘要),7×24小时自动抓取、筛选、生成并推送结构化日报,彻底解决人工扫新闻耗时多、漏报频、易被封等问题。(239字)
471 9
|
1月前
|
JavaScript Android开发 数据安全/隐私保护
以cocos3.8.8开发的游戏为例商业实战项目举例cocos打包ios苹果安装包ipa完整详细教程-优雅草卓伊凡
本教程基于Cocos Creator 3.8.8,详解iOS IPA打包全流程:含环境配置(Xcode、Apple开发者账号)、构建面板设置(包名、屏幕方向、签名等)、Xcode工程配置、Archive归档及IPA导出,并附常见报错解决方案,理论+实操结合,助力开发者高效上架。
270 8
以cocos3.8.8开发的游戏为例商业实战项目举例cocos打包ios苹果安装包ipa完整详细教程-优雅草卓伊凡
|
24天前
|
Web App开发 移动开发 监控
手机H5页面直接打开APP实现方案
在移动端H5页面中,当用户点击"打开APP"按钮时:如果用户已安装APP,直接打开APP并跳转到指定页面,如果用户未安装APP,引导用户到应用商店下载,支持iOS和Android系统。
366 3
|
1月前
|
人工智能 测试技术 调度
移动端 RPA 的架构重构:基于多模态视觉大模型的自动化调度系统压测复盘
本文复盘企业级移动端RPA重构实践,介绍如何以“侠客工坊”AI数字员工平台替代传统坐标录制方案:基于多模态大模型实现视觉语义决策、高并发多机型调度、零代码编排、异常自愈及MCP协议集成,显著提升自动化鲁棒性与运维效率。
193 10
|
19天前
|
人工智能 前端开发 JavaScript
用AI重塑RPA稳定性:实在Agent TARS语义定位技术拆解与落地实践
实在智能在实在Agent v7.3.4中推出TARS AI元素定位技术,通过视觉-语义联合建模,实现多模态编码、语义锚点生成与动态匹配优化,显著提升RPA在敏捷前端环境下的元素识别稳定性与自适应能力,配置即用,助力企业自动化迈向真正无人值守。(239字)
|
18天前
|
人工智能 弹性计算 双11
2026年阿里云最新优惠券领取与使用攻略:企业补贴优惠券、学生无门槛优惠券、百炼先用后返券
2026年阿里云优惠券体系覆盖企业、学生、AI开发者三大核心场景。企业用户可申请迁云补贴和出海扶持(最高10万元),需通过官网活动页或商务经理办理;高校学生完成认证即可领取300元无门槛券,有效期1年,适用于全量公共云产品;百炼大模型用户参与按量达标返券,满20返20、满100返100、满200返200,有效降低AI开发成本。此外还有AI焕新季满减礼包、618/双11阶梯满减等不定期推出的优惠券。善用阿里云优惠券,结合身份精准领券,可实现上云与AI创新成本最优。
|
1月前
|
监控 供应链 BI
Quick BI使用案例19:交叉表中当日订单金额百分位与基于嵌套计算的订单金额日环比百分位的双重分析
本文详解生鲜电商如何用“订单金额按列百分位”以及“基于嵌套计算的订单金额日环比百分位”的双重分析实现区域需求实时监控:连续2天百分位超80%为“爆发区”自动补货,连续2天百分位低于10%为“冰冻区”智能调拨,降低损耗、提升现货率。
|
24天前
|
弹性计算 安全 关系型数据库
阿里云服务器2核2G、2核4G、4核8G、8核16G怎么选实例?最新活动价格对比与实例规格选择指南
本文介绍了2026年阿里云服务器2核2G、2核4G、4核8G、8核16G配置的最新活动价格及选购指南。阿里云为个人开发者、初创团队及轻量级业务企业提供多样入门配置选择,如2核2G轻量应用服务器仅38元一年,2核4G配置199元包年。对于业务规模扩大或应用复杂度提升的用户,阿里云提供4核8G与8核16G配置,价格从1252.63元到5958.52元一年不等,满足不同性能需求。用户可根据业务需求和预算,在阿里云丰富产品线与优惠策略中选配最合适的云服务器实例。
|
1月前
|
数据采集 人工智能 自然语言处理
解码罗兰艺境GEO“1+11”解决方案全景图:从技术原理到商业增长
本文系统阐述罗兰艺境GEO解决方案的“1+11”全栈技术体系(1项发明专利+11项软件著作权),对应七大层级、十二项核心资产,从顶层专利、理论框架、智能中台、语义基建、商业产品、网站应用到安全基座,逐层解析每一模块如何协同为客户构建可继承、可验证的AI语义资产库,最终实现从技术原理到商业增长的确定性路径。
205 3
|
17天前
|
人工智能 编解码 Java
Harness Engineering:耗时一周,我是如何将应用的AI Coding率提升至90%的
文章内容基于作者个人技术实践与独立思考,旨在分享经验,仅代表个人观点。