2013-07-02 3 views
1

Решенный!Как я могу выводить свой сгенерированный сигнал сердечного ритма при высоком BPM точно с помощью Matlab?

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

У меня проблема выводящей мои генерируемых сигналов биений сердца, когда я играю сигнал с помощью звука в MATLAB и измерить его на внешнем мониторе сердечного ритма. Я получаю другое чтение для моделируемого значения. Но, похоже, они правильны только при 60 Bpm и, возможно, 100 Bpm. Необходимо включить частоту сердечных сокращений до 200 уд/мин. Для слов, я получаю много нестабильной продукции при высоких Bpm.

ответ

0

Изменить

delay = ((60/HR)/2)-(0.5*pulse_width); 

в

delay = 30/HR; 

tripuls ничего к времени ввода t1 не изменяется, так что ширина импульса должна не вычитается из вектора времени.

Вы можете увидеть, что это правильно, установив

pulse_width = 60e-4; 
% (try) 

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

Вы должны увидеть, что ваши результаты медленно идут все больше и больше к правильному HR (при условии, внешнее оборудование способно обрабатывать такие короткие импульсы).

+0

Ну, я не могу изменить задержку = 30/HR, потому что только это используется для определения продолжительности от любого сердечного ритма до следующего следующего сердечного ритма, который является мерой сердечных ударов в минуту (Bpm) Мне удалось найти решение, используя pulstran с tripuls и установив параметр в соответствии с константами задержки. спасибо – Federico

+0

@ user2527428: как я понял, ваша переменная 'delay' должна быть равна половине времени в секундах между двумя пиками, поэтому, другими словами, просто' 60/2/HR' или '30/HR'. Но у вас это работает, это важная часть. –

+0

Хорошо для текущего метода, который я использовал, условие все еще выполняется, как показано в приведенном выше коде! – Federico