Index of /~gari/CODE/HRV
Name Last modified Size Description
Parent Directory 19-May-2009 15:42 -
CliffordHRVtools.zip 22-Feb-2007 17:07 34k
Feb3snap.tar 22-Feb-2007 17:45 60k
KaplanHRV.html 22-Feb-2007 17:43 2k
KaplanHRVtools.zip 22-Feb-2007 17:02 21k
authors.html 22-Feb-2007 17:43 1k
donate.html 22-Feb-2007 17:43 1k
download.html 22-Feb-2007 17:43 1k
emd.m 19-Aug-2008 00:19 3k
funindex.html 22-Feb-2007 17:43 1k
rr0.dat 17-Apr-2007 13:35 9k
tutorial.html 22-Feb-2007 17:43 3k
warning.html 22-Feb-2007 17:43 2k
% KaplanHRVtools.zip is a collection of ECG HRV analysis algorithms for use
% with Matlab written by Danny Kaplan:
% http://www.macalester.edu/~kaplan/hrv/doc/index.html
% The local page KaplanHRV.html is a copy of this page from Feb 2007.
%
% Please register with Danny Kapaln if you download and/or use these algorithms.
% Please also read ./warning.html and refer to ./download.html
%
%
% Clifford HRVtools.zip is a collection of ECG HRV analysis algorithms for use
% with Matlab mostly by Gari Clifford and available under the GNU
% public license (see bottom of this file). They are not intended for any use
% except as a reference to my PhD work. Some unpublished results are
% in the code, which you are welcome to expand upon, but please reference
% me if you do.
%
% They are not intended as optimal algorithms, but they're not bad.....
% Please don't blame me if anything goes wrong - but feel free to
% email me and ask questions, which I'll answer if I have time
% Gari Clifford (gari@ieee.org)
%
% You may also be interested in the ../ECGtools/ software too, which
% includes:
%
% calc_lfhf.m - calculates the LF/HF ratio, LF and HF metrics
% lomb.m - calculates the Lomb-Scargle periodogram
% (PSD for unevenly sampled signals)
% rpeakdetect.m - finds R peaks in ECG - see rrextract
% rrextract.m - runs over rpeakdetect to extract RR intervals
% clean_hrv4.m - removes abnormally timed beats
% clean_RR_RS.m - removes abnormally timed & shaped beats
% example.m - an example file to run all this
% maxjiggle.m - finds peaks if the fiducial point is slightly off
% interp_RR.m - interpolates an unevenly sampled signal by your favourite
% (ad hoc) method. NOT recommended - it just introduces
% errors into a PSD calculation - use the Lomb-Scargle
% method, it's so much better.
% filterECG256Hz.m - ECG, 256Hz, Least Sq. FIR LP & HP filters
% (cascaded) 70dB 0.05-40Hz 1dB ripple
% filterECG128Hz.m - ECG, 128Hz, Least Sq. FIR LP & HP filters
% (cascaded) 70dB 0.05-40Hz 1dB ripple
% lfhf_sliding_win.m - calculates a time series of LF/HF values by
% sliding a window across the data
% sliding a window across the data
%
% generate_rr_with_FM.m - Creates an artificial RR interval
% time series
%
% down_sample_realistically.m - takes an evenly sampled time series
% and extracts a plausible (irregularly
% sampled) RR interval time series
% ECGfilterTimeAlignedSVD.m - uses a QRS detector and SVD to filter ECG
% select_train.m - makes a matrix of fiducual point centered
% P-QRS-T complexes.
% recon_ECG.m - unwraps a matrix of fiducual point centered
% P-QRS-T complexes into a 1-D signal
% svdFilter.m - filters data using SVD - variant of ECGfilterTimeAlignedSVD.m
% parabolic_filter.m - Parabolic Filter for baseline subtraction
% wienerFilter.m - Wiener filtering for the ECG
% plotWiener.m - plots the spectral response of wienerFilter.m
% wavelet_decompose.m - A wavelet filter for ECG analysis by Nick Hughes
% wabp.m - James Sun's version of Wei Zong's wabp.c (on www.physionet.org)
% (i.e. - a QRS detector for blood pressure signals)
%
% snr.m - calcualtes the signal to noise ration in dB
%
% conv_norm_annot.c ... this C-prog parses the output of the WFDB
% rdann program to extract the Normal to Normal intervals and puts
% it in a readable format for Matlab - read the header for details
% conv_sleep_annot.c ... as above, but works on sleep staging...
% - again, read the header for details, and type:
% type readme
%
% This software is offered freely and without warranty under the
% GNU public license. Please don't blame me if anything goes wrong :)
%
% gari@ieee.org
% These programs are free software; you can redistribute them and/or modify
% them under the terms of the GNU General Public License as published by
% the Free Software Foundation; either version 2 of the License, or
% (at your option) any later version.
%
% These programs are distributed in the hope that they will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
% GNU General Public License for more details.
%
% You should have received a copy of the GNU General Public License
% along with this program; if not, write to the Free Software
% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
%
% Most of these m-files and their dependents should be freely available from
% Physionet - http://www.physionet.org/ - in the near future... but please
% report any bugs to gari@ieee.org
% Change Log
% ----------
% Robert Tratnig at Graz Uni added the following comments and changes:
%
% clean_hrv_4.m:
% I have added a line that says "stp=0;".
% I call this line "38".
% According to this indication I added lines 38,39,40,43,44,45,47,50,51,82.
% Additionally I have altered line 40 (I added a condition: "(stp==0) & ".
%
% The same scheme I have applied to clean_RR_RS.m
% Here I call the line that says "stp=0;" line "51".
% In that context I added lines 51,52,53,56,57,58,60,61,62,102.
% Also here I have altered a line: 54 (I added a condition: "(stp==0) & ".
%
% I have to do this because of the following reason:
% When analyzing the file cu06.dat of the Creighton University Databank (CU_DB)
% in the MIT-data collection, the parameter transfered to this function
% clean_hrv4.m and clean_RR_RS.m (temp_hrv) was just a 3 rows long array of 2
% columns. Additionally no row satisfied the condition of the while loop, so I
% had an error called "Index exceeds matrix dimensions".
%
% Many thanks for that Rob!
%
%
%
% ToDo
% ----
%
% - vectorise lomb.m ... currently very slow. this code was emailed to
% me sometime in the past by a colleague who obtained it freely from the
% internet. I have made minor modifications but have so far failed to have
% time (or sufficient reason) to vectorise it (lomb.c does the job!)
%
% - Add optimisation routine to make either end of RR tachogram window
% have same mean and gradient within a tolerance as per Schreiber's
% surrogate window matching.