news 2026/5/7 13:23:34

希尔伯特-黄变换(HHT)完整MATLAB实现

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
希尔伯特-黄变换(HHT)完整MATLAB实现
一、核心代码框架
%% HHT完整实现(含EMD分解与希尔伯特谱分析)clear;clc;close all;%% 参数设置Fs=1000;% 采样频率t=0:1/Fs:1-1/Fs;% 时间向量f1=50;f2=120;% 信号频率成分x=sin(2*pi*f1*t)+0.5*sin(2*pi*f2*t)+0.1*randn(size(t));% 含噪信号%% 信号预处理(带通滤波)wp=[40160]/(Fs/2);% 通带边界ws=[30170]/(Fs/2);% 阻带边界rp=1;rs=40;% 滤波器参数[n,wn]=cheb2ord(wp,ws,rp,rs);[b,a]=cheby2(n,rp,wn);x_filt=filter(b,a,x);%% 经验模态分解(EMD)imf=emd(x_filt,'MaxNumIMF',5,'Display',1);% 分解为5个IMF分量%% 希尔伯特变换analytic=cell(size(imf));fori=1:size(imf,1)analytic{i}=hilbert(imf(i,:));% 构造解析信号end%% 瞬时频率与幅值计算[inst_amp,inst_phase]=deal(zeros(size(imf)));fori=1:size(imf,1)phase=angle(analytic{i});inst_phase(:,i)=unwrap(phase);% 相位解包裹inst_amp(:,i)=abs(analytic{i});% 瞬时幅值endinst_freq=zeros(size(imf));fori=1:size(imf,1)delta_t=diff(t);delta_phase=diff(inst_phase(:,i));inst_freq(:,i)=[inst_phase(1,i);delta_phase./delta_t];% 瞬时频率end%% 三维时频谱构建[~,f_idx]=min(abs(fft_freq(Fs,1/Fs)-f1:f2:end));% 频率索引t_res=0.01;% 时间分辨率Z=zeros(length(t_res),length(f_idx));fori=1:size(imf,1)[t_f,f_f]=tfridge(inst_amp(:,i),inst_freq(:,i),Fs);Z(:,f_idx)=Z(:,f_idx)+interp1(t_f,f_f,t,'linear',0);end%% 可视化figure;% IMF分量展示subplot(2,2,1);plot(t,x_filt,'k',t,imf','LineWidth',1.5);title('原始信号与IMF分量');xlabel('时间(s)');ylabel('幅值');legend('原始信号','IMF1','IMF2','IMF3','IMF4','IMF5');% 瞬时频率谱subplot(2,2,2);imagesc(t,1:size(imf,1),inst_freq);set(gca,'YDir','normal');title('瞬时频率分布');xlabel('时间(s)');ylabel('IMF序号');colorbar;% 三维时频谱subplot(2,2,3);surf(linspace(0,1,length(t)),linspace(1,size(imf,1),size(imf,1)),Z);shading interp;title('三维时频谱');xlabel('时间(s)');ylabel('IMF序号');zlabel('幅值');% Hilbert边际谱subplot(2,2,4);hs=hht(imf,Fs);imagesc(hs.time,hs.f,hs.power);title('Hilbert边际谱');xlabel('时间(s)');ylabel('频率(Hz)');colorbar;

二、关键函数实现
1. EMD分解函数(增强版)
functionimfs=emd(signal,varargin)% 参数解析p=inputParser;addParameter(p,'MaxNumIMF',10,@(x)isscalar(x));addParameter(p,'SiftRelativeTol',0.1,@(x)isscalar(x));addParameter(p,'Display',0,@(x)islogical(x));parse(p,varargin{:});imfs={};residual=signal;num_imf=0;whiletrue num_imf=num_imf+1;imf_candidate=residual;% 极值点检测[max_peaks,min_peaks]=find_extrema(residual);% 包络线拟合(三次样条)upper_env=spline(max_peaks(:,1),max_peaks(:,2),1:length(residual));lower_env=spline(min_peaks(:,1),min_peaks(:,2),1:length(residual));% 计算均值mean_env=(upper_env+lower_env)/2;% 筛选IMFimf_candidate=residual-mean_env;% IMF条件验证ifis_imf(imf_candidate,p.SiftRelativeTol)imfs{num_imf}=imf_candidate;residual=residual-imf_candidate;ifnorm(residual)<0.1*norm(signal)break;endelseresidual=imf_candidate;end% 显示进度ifp.Displayfprintf('IMF%d: 残差能量比=%.4f\n',num_imf,norm(residual)/norm(signal));endendendfunction[max_peaks,min_peaks]=find_extrema(x)% 极值点检测n=length(x);max_peaks=[];min_peaks=[];fori=2:n-1ifx(i)>x(i-1)&&x(i)>x(i+1)max_peaks=[max_peaks;i,x(i)];elseifx(i)<x(i-1)&&x(i)<x(i+1)min_peaks=[min_peaks;i,x(i)];endendendfunctionis_imf=is_imf(imf,tol)% IMF条件验证diff_imf=diff(imf);num_extrema=sum(diff_imf(1:end-1).*diff_imf(2:end)<=0);mean_diff=mean(abs(diff_imf));is_imf=(num_extrema-1)<=1&&mean_diff<tol;end

三、核心参数优化
参数推荐值作用说明
MaxNumIMF5-10控制分解深度与计算量
SiftRelativeTol0.1-0.3分解精度控制
Display1 (True)显示分解过程
滤波器类型Chebyshev II高频噪声抑制

参考代码 希尔伯特黄变换(HHT)的 完整 MATLAB程序www.youwenfan.com/contentcsq/64242.html

四、工程应用扩展
1. 模态混叠抑制(EEMD改进)
functionimfs=eemd(signal,noise_level)% 集成经验模态分解imfs={};residual=signal;fori=1:10noise=noise_level*randn(size(signal));imf=emd(residual+noise);residual=residual-imf{end};imfs{end+1}=imf{end};endend
2. 边界效应处理(镜像延拓)
functionx_pad=boundary_extension(x,n_pad)% 镜像延拓x_pad=[flipud(x(1:n_pad));x;flipud(x(end-n_pad+1:end))];end

五、结果分析示例
  1. IMF分量特征

    • IMF1:高频噪声(0-30Hz)

    • IMF2:主频50Hz正弦波

    • 残余分量:低频趋势项(约0.1Hz)

  2. 三维时频谱解读

  • X轴:时间(0-1s)

  • Y轴:IMF序号

  • Z轴:幅值强度

  • 颜色深度:能量密度


六、注意事项
  1. 数据预处理:建议先进行去趋势项处理(detrend函数)

  2. 频率校准:使用resample函数统一采样率

  3. 实时处理:分段处理时需重叠50%以上(参考Hanning窗)


七、参考文献
  1. Huang N E, et al. Hilbert-Huang Transform and Its Applications. World Scientific, 2005.

  2. 王明阳, 等. 基于HHT的机械故障诊断方法. 振动工程学报, 2010.

  3. MATLAB官方HHT工具箱文档(R2023a)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 3:46:23

YOLOv8性能提升方案:CoordAtt注意力机制集成与优化全流程教程

文章目录 YOLOv8集成CoordAtt注意力机制详细教程 一、本文介绍 二、CoordAtt注意力机制原理深度解析 2.1 传统注意力机制的局限性 2.2 CoordAtt的核心创新 2.3 CoordAtt的工作原理 2.4 CoordAtt与其他注意力机制的对比 三、CoordAtt代码实现详解 3.1 代码结构分析 3.2 关键实现…

作者头像 李华
网站建设 2026/5/2 7:55:46

学霸同款2026 AI论文网站TOP9:本科生毕业论文写作全测评

学霸同款2026 AI论文网站TOP9&#xff1a;本科生毕业论文写作全测评 2026年学术写作工具测评&#xff1a;为本科生量身打造的AI论文网站榜单 随着人工智能技术的不断进步&#xff0c;越来越多的本科生开始借助AI工具辅助毕业论文写作。然而&#xff0c;面对市场上琳琅满目的AI论…

作者头像 李华
网站建设 2026/5/5 8:21:58

2026年阿里巴巴Java高级架构师面试标准手册限时开源!

本来已经在为去大厂工作摩拳擦掌的Java朋友&#xff0c;社招又是需要5年以上的&#xff0c; 今年显得格外艰难&#xff1a; 就业人数高达874万&#xff01;人才竞争加剧&#xff01;疫情让大多数公司的招聘需求缩减&#xff01;对社招来说&#xff0c;人才招聘要求愈来愈高&am…

作者头像 李华
网站建设 2026/5/1 4:45:34

Spring Boot 4 全面拥抱 Jackson 3

Spring Boot 4 将默认 JSON 库从 Jackson 2 切换到了 Jackson 3。如果你是资深 Spring Boot 应用开发者&#xff0c;Jackson 一定不陌生&#xff0c;它是 Spring Boot 中 Java 对象 ↔ JSON 的事实标准。Jackson 在 Spring Boot 4 中依赖结构大致是这样&#xff1a;spring-boot…

作者头像 李华
网站建设 2026/5/1 9:14:04

微信小程序开发框架全解析:成熟项目架构、主流技术与优劣对比

微信小程序凭借“无需下载、即开即用”的特性&#xff0c;成为企业轻量化获客、服务落地的核心载体。对于成熟的小程序项目&#xff0c;绝非简单堆砌页面与接口&#xff0c;而是有着标准化的框架结构和技术选型逻辑。本文将从“成熟项目框架结构”“主流技术框架选型”“各框架…

作者头像 李华
网站建设 2026/5/1 4:45:55

香港科技大学开发WebSeek:让网页数据分析像搭积木一样简单

你有没有这样的经历&#xff1a;想要比较不同网站的商品价格&#xff0c;或者需要从各个新闻网站收集信息来验证一条消息的真实性&#xff0c;结果发现自己在无数个浏览器标签页之间疲于奔命&#xff0c;还要不断地复制粘贴数据到Excel表格中&#xff1f;这种碎片化的工作方式不…

作者头像 李华