This example shows how to use the Time Scope Peak Finder panel to measure the heart rate from an ECG.
This model emulates an ECG heart rate.
To emulate a heart beat, the model imports the variable
mhb from the MATLAB® workspace. This variable is created when the model loads because the commands that construct it are in the model Preload function. To view these commands, in the Simulink® menu, select
File > Model Properties > Model Properties. The Model Properties dialog box appears. Click the
Callbacks tab. The following lines of MATLAB® code appear.
x1 = 3.5*ecg(2700); y1 = sgolayfilt(kron(ones(1,13),x1),0,21); n = (1:30000)'; del = round(2700*rand(1)); mhb = y1(n + del); ts = 0.00025;
ecg is a custom function that helps generate the heartbeat signal.
function x = ecg(L) a0 = [0, 1, 40, 1, 0, -34, 118, -99, 0, 2, 21, 2, 0, 0, 0]; d0 = [0, 27, 59, 91, 131, 141, 163, 185, 195, 275, 307, 339, 357, 390, 440]; a = a0 / max(a0); d = round(d0 * L / d0(15)); d(15) = L; for i = 1:14 m = d(i) : d(i+1) - 1; slope = (a(i+1) - a(i)) / (d(i+1) - d(i)); x(m+1) = a(i) + slope * (m - d(i)); end
Run your model to see the time domain output.
To show the
Peak Finder panel, in the Time Scope menu, select
Tools > Measurements > Peak Finder.
To expand the
Settings section, click the arrow next to the label.
Enter 10 for
Max Num of Peaks. The Time Scope Peaks section now displays a list of 10 peak amplitude values, and the times at which they occur.
The list of peak values show a constant time difference of 0.675 seconds between each heartbeat. Therefore, the heart rate of the ECG signal is 88.89 beats per min (bpm).