2017-01-24 115 views
0

我正在進行ECG信號處理。我正在使用MIT-BIH心律失常數據庫found here在ECG信號中標記峯值

加載信號後,我正確標記了R峯。 然後我試圖提取QRS波羣,但是我不能。

我想在此圖像的山峯上標記標記:

。 。 。 。 。 。 。 signal

這裏是我的代碼:

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'); 
+0

到底是什麼_QRS_?不是每個人都是醫生或生物醫學/電氣工程師....我認爲你想要實現什麼樣的插圖可能對此有所幫助。 –

+0

我更新了圖像的問題,說明了心電信號和QRS。 – aast

+0

這張圖片是否有放大版本?我仍然不明白「QRS複合體」究竟是什麼意思?你想要Q,R和S的「x」值嗎?他們的「y」值? **編輯:**沒關係..我終於看到「QRS複合體」是開始Q滴直到S上升後的距離... –

回答

0

我不知道我理解正確你,但這裏得到的標記,如圖表中的一個方式,你發現:

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'); 

這使:

enter image description here