首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在ECG信号中标记峰值

在ECG信号中标记峰值
EN

Stack Overflow用户
提问于 2017-01-24 19:03:02
回答 1查看 1.8K关注 0票数 0

我的工作是心电图信号处理。我用的是麻省理工学院的心律失常数据库found here

加载信号后,我正确地标记了R峰。然后我试着提取QRS波群,但我做不到。

我想在山峰上做标记,如下图所示:

。。。。。。。

下面是我的代码:

代码语言:javascript
复制
 clear all;
    clc;
    close all;
    load ('G:\1.Thesis\data set\100\100m')
    %% Remove base & gain
    %%figure (1)
    val = (val - 1024)/200;    
    ECGsignal = val(1,1:3600);  
    SAMPLES2READ = 3600;       
    time = (0:length(ECGsignal)-1)/SAMPLES2READ; 
    plot(time,ECGsignal); title('ECG Signal')

    %% Finding Maxima or Peaks
    figure (2)
    [pks,locs] = findpeaks(ECGsignal);
    plot(time,ECGsignal,time(locs),pks,'rv','MarkerFaceColor','r'); grid on
    xlabel('Time'); ylabel('Voltage')
    title('Find All Peaks'); legend('ECG Signal','Peaks')

    %% Measuring Distance Between Peaks
    %Find R peaks
    figure (3)
    [pks_Rwave,locs_Rwave] = findpeaks(ECGsignal,'MinPeakHeight',0.5,'MinPeakDistance',200);
    fprintf('locs_Rwave = \n');
    disp (locs_Rwave)
    pks_Rwave1 = pks_Rwave*100;
    fprintf('pks_Rwave = \n');
    disp (pks_Rwave1)
    plot(time,ECGsignal,time(locs_Rwave),pks_Rwave,'rv','MarkerFaceColor','r'); grid on
    xlabel('Time'); ylabel('Voltage');
    title('Find Prominent Peaks');

%% Q wave     
    ECG_inverted = -ECGsignal;
    [pks_Qwave,locs_Qwave] = findpeaks(ECG_inverted,'MinPeakHeight',0.2,'MinPeakDistance',200);
    k = 1:length(ECGsignal);
    figure(5)
    hold on 
    plot(k,ECGsignal);
    plot(locs_Qwave,ECGsignal(locs_Qwave),'rs','MarkerFaceColor','g');
    plot(locs_Rwave,ECGsignal(locs_Rwave),'rv','MarkerFaceColor','r');
    grid on
    axis([50 400 -0.8 2]); 
    legend('ECG signal','Q-wave','R-wave','S-wave');
    xlabel('Samples'); ylabel('Voltage(mV)')
    title('Q-wave , R-wave and S-wave');
EN

回答 1

Stack Overflow用户

发布于 2017-01-26 00:15:29

我不确定我是否正确理解了您的意思,但这里有一种方法可以获得您显示的图表中的标记:

代码语言:javascript
复制
rng(41826521);
sig = 1.6*randn(100,1); % Y-vector
smpl_id = 1:numel(sig); % X-vector; Or you can use find(idx) instead of smpl_id(idx).

figure(); plot(sig); grid on; hold on; grid minor;
idx =  2   < sig;             plot(smpl_id(idx),sig(idx),'rv','MarkerFaceColor','r');
idx = -2.5 < sig & sig < -2;  plot(smpl_id(idx),sig(idx),'rs','MarkerFaceColor','g');
idx = sig < -2.5;             plot(smpl_id(idx),sig(idx),'rs','MarkerFaceColor','b');

这提供了:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41826521

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档