Skip to content

Using PulseAnalyse

Peter Charlton edited this page Nov 11, 2019 · 26 revisions

Using PulseAnalyse

This page provides an overview of how to use PulseAnalyse.

Pre-requisites

You will need three items to run PulseAnalyse:

  1. A Matlab ® installation
  2. The PulseAnalyse code
  3. Some data to analyse (such as the example data)

Basic Functionality

PulseAnalyse can be used to analyse either a single pulse wave, or a pulsatile signal containing multiple pulse waves.

Inputs

The input data, S, should be prepared as a structure with the following fields:

  • S.v : a vector of signal amplitudes (either a single pulse wave starting at the pulse onset, or a pulsatile signal containing several pulse waves)
  • S.fs : the sampling frequency (in Hz)
  • S.ht : (optional) the subject's height (in metres)

Running PulseAnalyse

At its simplest, PulseAnalyse can be called using

[pw_inds,fid_pts] = PulseAnalyse(S);

This will calculate the pulse wave indices (pw_inds) and provide the amplitudes and timings of the fiducial points (fid_pts) on the pulse wave (or pulsatile signal) provided by S. You can quickly get started with an example pulse wave by following the Analysing a single pulse wave example.

Outputs

PulseAnalyse returns the following outputs:

  • pw_inds: A structure containing the calculated pulse wave indices. For instance, pw_inds.AI.v is the value of the augmentation index (AI). If the input S contains several pulses, then pw_inds.AI.v is the median AI value, and pw_inds.AI.raw is a vector of raw values for each pulse.

  • fid_pts: A structure containing:

    1. fid_pts.ind: the indices of the fiducial points
    2. fid_pts.amp: the ampltiudes of the fiducial points
    3. fid_pts.amp_norm: the amplitudes of the fiducial points (when the pulse wave is normalised to occupy a range of 0 to 1)
    4. fid_pts.t: the times of the fiducial points (relative to pulse wave onsets)

    For instance, fid_pts.ind.dic provides the indices of the dicrotic notch(es).

  • pulses: A structure containing information on the pulses:

    1. pulses.peaks - the indices of systolic peaks
    2. pulses.onsets - the indices of pulse onsets (i.e. beginning of systole)
    3. pulses.quality - a logical indicating the signal quality of each pulse (true indicates high quality)
  • sigs: A structure containing the following signals:

    1. sigs.orig - the original signal
    2. sigs.filt - a filtered signal (if the filtering option is enabled)
    3. sigs.first_d - first derivative
    4. sigs.second_d - second derivative
    5. sigs.third_d - third derivative

For instance, this full set of outputs is returned when running

[pw_inds,fid_pts,pulses,sigs] = PulseAnalyse(S);

Enabling Advanced Functionality through Options

A range of options (listed below) can be specified to adjust the analysis conducted by PulseAnalyse. For instance, whereas the first example can be run using the following command with no options specified:

PulseAnalyse([]),

this could be modified to specify to only plot the pulse wave, and not its derivatives, using:

options.plot_pw_only = 1; PulseAnalyse([], options)

Option Default Definition
do_plot 1 A logical (1 or 0) indicating whether or not to make plots
exclude_low_quality_data 1 A logical indicating whether or not to exclude low quality pulse waves from the calculation of median values of pulse wave indices
plot_third_deriv 0 A logical indicating whether or not to plot the third derivative
close_figures 1 A logical indicating whether or not to close all Matlab figures before running the analysis
do_filter 1 A logical indicating whether or not to filter pulse waves prior to analysis
save_folder '' A string containing the path of a directory in which to save plots
save_file '' A string containing the filename under which to save plots (without an extension)
beat_detector 'IMS' The type of beat detector to use when analysing a prolonged recording of multiple pulse waves. Definitions: IMS - incremental merge segmentation algorithm (implemented by M.A.F Pimentel as part of the RRest toolbox).
verbose 0 A logical indicating whether or not to provide text outputs for any warnings
plot_areas 0 A logical indicating whether or not to plot the systolic and diastolic areas on the pulse wave
plot_pw_only 0 A logical indicating whether or not to plot only the pulse wave and not its derivatives
normalise_pw 1 A logical indicating whether or not to normalise the pulse wave to occupy a range of 0 to 1