找出EKG数据的平均心率

16次浏览(过去30天)
陆同上
陆同上 2022年11月13日
评论道: 明星黾 2022年11月14日
你好,我有一个。wav文件组成的心电图数据。我想找到平均心率(BPM),但我不完全确定如何做到这一点。我已经使用audioread将wav文件读入MATLAB,并能够绘制它。如何计算平均心率?
y, Fs] = audioread(“EKG.wav”);
y = y (: 1);dt = 1 / f;t = 0: dt: dt(长度(y) * dt);
情节(t、y);xlabel('时间(秒)')ylabel('振幅')title('心电图(放松)')

接受的答案

明星黾
明星黾 2022年11月13日
编辑:明星黾 2022年11月14日
我会用 findpeaks 的适当值 “MinPeakProminence” 仅选择 R 变形量。
的例子,
(y, Fs) = audioread (“EKG.wav”);
y = y (: 1);
dt = 1 / f;
t = 0: dt: dt(长度(y) * dt);
Pv = 1;%最小峰值突出值
[pks, locs] = findpeaks(y,“MinPeakProminence”、光伏);
Rtimes = t(locs);
Rperiod = diff(Rtimes);
Rfreq = 1/mean(Rperiod)
做出适当的改变以获得预期的结果。
编辑- (2022年11月14日)
这是一个非常奇怪的心电图。我不知道它是什么铅,但它似乎有一个RSR'(读作:R- s -R ')模式,而R'偏转略微使 findpeaks 叫. .如果是右心前导联,我会怀疑是房间隔缺损,或者是某种明显的传导系统异常。不知道线索,也没有其他线索可以把它放在上下文中,我不知道它意味着什么。
Uz = unzip(“//www.tianjin-qmedu.com/matlabcentral/answers/uploaded_files/1191893/Ludovic.zip”
是乌斯=1×2单元格数组
{' Ludovic.wav} {' __MACOSX / ._Ludovic.wav '}
[y, Fs] = audioread(是乌斯{1});
y = y (: 1);
dt = 1 / f;
t = 0: dt: dt(长度(y) * dt);
% L =数字(y);
% t = linspace(0, L-1, L)/Fs;
数字
情节(t, y)
网格
包含(“时间”
ylabel (“振幅”
数字
情节(t, y)
网格
包含(“时间”
ylabel (“振幅”
xlim (7 [0])
Pv = 0.45;%最小峰值突出值
[pks, locs] = findpeaks(y,“MinPeakProminence”、光伏);
Rtimes = t(locs);
Rperiod = diff(Rtimes);
meanperiod = mean(Rperiod)%单位:秒
MeanRperiod = 0.7256
Rperiod = std(Rperiod)%单位:秒
StDvRperiod = 0.2738
SEMRperiod = StDvRperiod/√(数字(locs))%单位:秒
SEMRperiod = 0.0172
RangeRfreq = 1。/ ((1) * 1.96 * SEMRperiod + MeanRperiod)%单位:1/秒
RangeRfreq = 1×2
1.3169 - 1.4453
Rfreq = 1/mean(Rperiod)%速率,单位= 1/秒
Rfreq = 1.3781
Rfreq * 60%速率,单位= 1/分钟
Ans = 82.6849
数字
情节(t, y)
持有
情节(t (loc),“^ r”
持有
网格
包含(“时间”
ylabel (“振幅”
xlim (11 [0])
结果是相当敏感的 “光伏” 值,因此如果有更多的记录,可能需要对其进行实验以获得适当的结果。
2的评论
明星黾
明星黾 2022年11月14日
当我用已发布的文件运行它时,它起作用了。如果您使用相同的文件并复制并粘贴我发布的代码,那么当您运行它时,您应该会得到与我相同的结果。
我不能重新运行它,因为文件在这里已经不存在了。请重新发布。(删除之前发布的数据或代码是不礼貌的。)
如果您正在使用不同的文件运行我的代码,则可能需要调整 “光伏” 值,这样 findpeaks 返回正确的 R -偏转位置和值。如前所述,我的代码可能对 “光伏” 价值。为了得到正确的结果,我不得不用它做实验。

登录评论。

更多答案(1)

克里斯·拉皮埃尔
克里斯·拉皮埃尔 2022年11月13日
我会计算每次心跳的瞬时心率,然后取平均值,得到平均心率。要做到这一点,您需要确定每次心跳中的一个单一特征(可能是QRS复合体的峰值),找到每个心跳之间的时间,并将其转换为瞬时心率。
你可能会发现这个YouTube直播的前20分钟很有帮助。只是要注意所使用的示例缺少时间数据。
3评论

登录评论。

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!

翻译的