当前位置: 首页 > news >正文

基于ECG信号的HRV时域与频域分析Matlab代码实现

一、核心流程

ECG数据导入

预处理

R波检测

RR间期提取

时域分析

频域分析

可视化


二、完整Matlab代码实现
1. 数据预处理(去噪与基线校正)
functionclean_ecg=preprocess_ecg(ecg,fs)% 带通滤波(0.5-40Hz)去除工频干扰和基线漂移[b,a]=butter(3,[0.540]/(fs/2));filtered=filtfilt(b,a,ecg);% 小波去噪(db4小波,5层分解)[c,l]=wavedec(filtered,5,'db4');denoised=waverec(wthresh(c,'s',3*std(c)/2),l,'db4');% 移动平均平滑(窗口宽度=50ms)window=round(0.05*fs);clean_ecg=movmean(denoised,window);end
2. R波检测(改进Pan-Tompkins算法)
function[r_peaks,locs]=detect_r_peaks(ecg,fs)N=length(ecg);window=round(0.15*fs);% 积分窗口% 平方与积分squared=ecg.^2;integrated=filter(ones(1,window)/window,1,squared);% 动态阈值threshold=0.7*max(integrated(1:1000))+0.3*std(integrated(1:1000));% 峰值检测[peaks,locs]=findpeaks(ecg,'MinPeakHeight',threshold,...'MinPeakDistance',round(0.2*fs),'Prominence',0.5*threshold);end
3. RR间期提取
functionrr_intervals=get_rr_intervals(locs,fs)rr_samples=diff(locs);rr_intervals=rr_samples/fs*1000;% 转换为毫秒% 异常值处理(3σ原则)mean_rr=mean(rr_intervals);std_rr=std(rr_intervals);rr_intervals(rr_intervals<mean_rr-3*std_rr|rr_intervals>mean_rr+3*std_rr)=[];end
4. 时域分析
function[sdnn,rmssd,pnn50]=time_domain(rr_intervals)N=length(rr_intervals);% 基本指标sdnn=std(rr_intervals);% 差分序列diffs=diff(rr_intervals);% RMSSDrmssd=sqrt(mean(diffs.^2));% pNN50nn50=sum(diffs>50);pnn50=nn50/N;end
5. 频域分析(Welch方法)
function[lf_power,hf_power,lf_hf_ratio]=freq_domain(rr_intervals,fs)N=length(rr_intervals);window=hamming(256);noverlap=128;% 功率谱估计[Pxx,f]=pwelch(rr_intervals,window,noverlap,[],fs);% 频段划分lf_band=[0.04,0.15];hf_band=[0.15,0.4];% 频段积分lf_idx=f>=lf_band(1)&f<=lf_band(2);hf_idx=f>hf_band(1)&f<=hf_band(2);lf_power=trapz(f(lf_idx),Pxx(lf_idx));hf_power=trapz(f(hf_idx),Pxx(hf_idx));% LF/HF比值lf_hf_ratio=lf_power/hf_power;end
6. 可视化模块
functionplot_hrv_results(ecg,rr_intervals,locs,sdnn,rmssd,lf_hf_ratio)figure;% ECG波形与R峰标记subplot(3,1,1);plot(ecg);hold on;plot(locs,ecg(locs),'ro');title('ECG波形与R峰检测');xlabel('时间 (s)');ylabel('幅值 (mV)');% RR间期序列subplot(3,1,2);stem(rr_intervals,'b','LineWidth',1.5);title('RR间期序列');xlabel('心跳序号');ylabel('间隔 (ms)');% 时频域指标subplot(3,1,3);bar([sdnn,rmssd,lf_hf_ratio]);set(gca,'XTickLabel',{'SDNN (ms)','RMSSD (ms)','LF/HF'});ylabel('数值');title('HRV时频域指标');end

三、完整调用示例
%% 参数设置fs=250;% 采样率 (Hz)ecg=load('ecg_signal.mat');% 加载ECG数据(列向量)%% 预处理clean_ecg=preprocess_ecg(ecg,fs);%% R波检测[r_peaks,locs]=detect_r_peaks(clean_ecg,fs);%% RR间期提取rr_intervals=get_rr_intervals(locs,fs);%% 时域分析[sdnn,rmssd,pnn50]=time_domain(rr_intervals);%% 频域分析[lf_power,hf_power,lf_hf_ratio]=freq_domain(rr_intervals,fs);%% 可视化plot_hrv_results(clean_ecg,rr_intervals,locs,sdnn,rmssd,lf_hf_ratio);

四、结果示例
指标正常范围临床意义
SDNN50-100 ms总体自主神经活性
RMSSD20-80 ms副交感神经张力
LF/HF0.5-2.0交感-副交感平衡

参考代码 采用ECG信号进行HRV的时域分析、频域分析的Matlab代码www.youwenfan.com/contentcnq/55064.html

五、扩展功能
  1. 呼吸耦合分析

    % 呼吸信号同步处理[resp_rate,phase]=respiratory_analysis(ecg,fs);
  2. 非线性分析

    % Poincaré图[sd1,sd2]=poincare_plot(rr_intervals);
  3. 机器学习集成

    % 使用HRV特征训练分类模型features=[sdnn,rmssd,lf_hf_ratio];model=train_classifier(features,labels);

六、注意事项
  1. 数据质量验证:需检查QRS波群形态(使用ECG诊断工具箱)

  2. 采样率要求:建议≥250Hz(MIT-BIH标准)

  3. 临床验证:需与专业医疗设备(如Holter)对比


参考文献

ECG信号预处理与R波检测算法优化

HRV时域频域特征计算方法

基于Welch方法的功率谱估计

运动伪影消除技术

http://www.cnnetsun.cn/news/705157.html

相关文章:

  • Qwen-Image-2512推理延迟高?GPU利用率优化实战对比
  • 基于引脚定义的USB3.0接口高速传输误码率控制指南
  • 医疗报告图像处理:cv_resnet18_ocr-detection提取关键数据
  • 手势识别模型量化教程:让AI在普通电脑流畅运行
  • Llama3-8B碳排放计算:环保领域模型部署实战
  • [特殊字符]_容器化部署的性能优化实战[20260119161824]
  • Speech Seaco Paraformer ASR教育领域应用:课堂讲义自动生成教程
  • Youtu-2B功能测评:2B参数大模型的对话能力有多强?
  • VAE独立并行有必要吗?Live Avatar性能影响分析
  • 从零实现Protel99SE在XP系统的稳定安装
  • BAAI/bge-m3实战:跨领域文本相似度分析
  • PaddleOCR-VL-WEB技术详解:文档布局分析算法
  • 手把手教你部署Fun-ASR,本地ASR系统轻松搞定
  • 如何快速配置Scarab:空洞骑士模组管理终极指南
  • PyTorch-2.x-Universal-Dev-v1.0环境部署教程:OpenCV-Python-headless应用解析
  • Qwen3-Embedding-4B调用报错?常见问题排查步骤详解
  • Qwen3-14B模型监控方案:推理性能实时分析工具
  • YOLOE镜像使用心得:高效又省心的检测方案
  • 24l01话筒在无线麦克风中的实践应用
  • 告别PLM的“通用”之痛:全星APQP,献给汽车电子与芯片半导体的专属研发解决方案
  • MinerU 2.5企业应用:合同PDF风险条款自动检测
  • 2025大模型部署趋势:Qwen3-14B弹性GPU应用实战指南
  • 别把希望交给魔法:一份清醒的健康指南
  • 基于模型预测的三相整流器MATLAB仿真模型研究
  • 远程PLC监控调试,PLC通用中转服务器,多客户端tcp中转服务器源代码,socket多线程并发通讯
  • Z-Image-Turbo调优实践:提升出图质量的几个技巧
  • Elasticsearch客户端工具自动化运维脚本应用实例
  • 基于MATLAB仿真的三相逆变器闭环控制与带解耦控制的pi算法研究
  • 亲测好用10个AI论文写作软件,MBA毕业论文轻松搞定!
  • 基于形态学的权重自适应图像去噪:MATLAB数字图像处理探索