如何使用matlab以高BPM准确输出生成的心跳信号?

如何使用matlab以高BPM准确输出生成的心跳信号?,matlab,audio,heartbeat,beat-detection,Matlab,Audio,Heartbeat,Beat Detection,解决了 当我在matlab中使用声音播放信号并在外部心率监视器上测量时,我在输出生成的心跳信号时遇到问题。我得到的读数与模拟值不同。但似乎只有在60 Bpm到100 Bpm时才是正确的。需要包括高达200 Bpm的心率。换句话说,我在高Bpm时得到很多不稳定的输出。改变 % Function to Generate ECG of heart beat signal for specified duration %---------------------------------------

解决了

当我在matlab中使用声音播放信号并在外部心率监视器上测量时,我在输出生成的心跳信号时遇到问题。我得到的读数与模拟值不同。但似乎只有在60 Bpm到100 Bpm时才是正确的。需要包括高达200 Bpm的心率。换句话说,我在高Bpm时得到很多不稳定的输出。

改变

 % Function to Generate ECG of heart beat signal for specified duration
%---------------------------------------

function [Heartbeat,t] = ECG_Gen (HR,pulse_width,Amp,duration)

Fs = 48000;

delay = (60/HR);

t = 0 : 1/Fs : duration;         % 48000 kHz sample freq for duration (secs)
d = 0 : delay : duration; 

Heartbeat = Amp*pulstran(t,d,'tripuls',pulse_width);
进入

tripuls
不会改变时间输入
t1
,因此不应从时间向量中减去脉冲宽度

通过设置,您可以看到这是正确的

delay = 30/HR;

您应该看到您的结果慢慢地越来越接近正确的HR(前提是您的外部设备能够处理如此短的脉冲)

我真的不能改变延迟=30/小时,因为它单独用于确定从任何一次心跳到下一次心跳的持续时间,这是每分钟心跳次数(Bpm)的度量。我通过使用脉冲串和三脉冲,并设置参数以适应延迟常数,找到了一个解决方案。thanks@user2527428:据我所知,您的
延迟
变量应等于两个峰值之间时间的一半(以秒为单位),因此换句话说,简单地说,就是
60/2/HR
30/HR
。但是你让它工作了,这是重要的一部分。对于我使用的当前方法,条件仍然保持,如上面的代码所示!
delay = 30/HR;
pulse_width = 60e-4;
% (try)

pulse_width = 60e-10;
% (try again)