【发布时间】:2017-06-09 03:41:05
【问题描述】:
我正在研究心电图信号处理。我正在使用 MIT-BIH 心律失常数据库found here。
加载信号后,我正确标记了 R 峰值。 然后我试图提取 QRS 复合波,但我做不到。
我想在这张图片中的山峰上做标记:
。 . . . . . .
这是我的代码:
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');
【问题讨论】:
-
究竟什么是QRS?并非这里的每个人都是医生或生物医学/电气工程师......我认为你想要达到的目标的插图在这里可能会有所帮助。
-
我用说明心电图信号和 QRS 的图像更新了问题。
-
这张图片有大图吗?我还是不明白你说的“QRS 波群”到底是什么意思?您想要 Q、R 和 S 的“x”值吗?他们的“y”值? 编辑:没关系..我终于看到“QRS复合体”是Q下降开始到S上升之后的距离......
-
@Dev-iL 在绘制心电图信号后,我想像上图一样标记这个峰值。
-
查看更新后的图像,您似乎可以用红色三角形标记
0.6以上的每个值,用绿色方块标记-0.1和-0.4之间的每个值,以及每个值在-0.6下方带有一个蓝色方块。
标签: matlab plot signal-processing matlab-figure markers