Switch to side-by-side view

--- a
+++ b/data preprocessing_Matlab/loadEcgSig.m
@@ -0,0 +1,72 @@
+function [tm,ecgsig,ann,Fs,sizeEcgSig,timeEcgSig] = loadEcgSig(Name)
+% USAGE: [tm,ecgsig,ann,Fs,sizeEcgSig,timeEcgSig] = loadEcgSig('../data/200m')
+% This function reads a pair of files (RECORDm.mat and RECORDm.info) generated
+% by 'wfdb2mat' from a PhysioBank record, baseline-corrects and scales the time
+% series contained in the .mat file, returning time, amplitude and frequency.
+% The baseline-corrected and scaled time series are the rows of matrix 'val', and each
+% column contains simultaneous samples of each time series.
+% 'wfdb2mat' is part of the open-source WFDB Software Package available at
+%    http://physionet.org/physiotools/wfdb.shtml
+% If you have installed a working copy of 'wfdb2mat', run a shell command
+% such as wfdb2mat -r 100s -f 0 -t 10 >100sm.info
+% to create a pair of files ('100sm.mat', '100sm.info') that can be read
+% by this function.
+% The files needed by this function can also be produced by the
+% PhysioBank ATM, at http://physionet.org/cgi-bin/ATM
+
+% Adapted from
+% loadEcgSignal.m           O. Abdala			16 March 2009
+% 		      James Hislop	       27 January 2014	version 1.1
+
+% Last version
+% loadEcgSignal.m           D. Kawasaki			15 June 2017
+% 		      Davi Kawasaki	       15 June 2017 version 1.0
+
+infoName = strcat(Name, '.info');
+matName = strcat(Name, '.mat');
+load(matName);
+ecgsig = val;
+fid = fopen(infoName, 'rt');
+fgetl(fid);
+fgetl(fid);
+fgetl(fid);
+[freqint] = sscanf(fgetl(fid), 'Sampling frequency: %f Hz  Sampling interval: %f sec');
+Fs = freqint(1);
+interval = freqint(2);
+fgetl(fid);
+
+for i = 1:size(ecgsig, 1)
+  [row(i), signal(i), gain(i), base(i), units(i)]=strread(fgetl(fid),'%d%s%f%f%s','delimiter','\t');
+end
+
+fclose(fid);
+ecgsig(ecgsig==-32768) = NaN;
+
+for i = 1:size(ecgsig, 1)
+    ecgsig(i, :) = (ecgsig(i, :) - base(i)) / gain(i);
+end
+N = size(ecgsig, 2);
+tm1 = 1/Fs:1/Fs:N/Fs;
+tm = (1:size(ecgsig, 2)) * interval;
+sizeEcgSig = size(ecgsig, 2);
+timeEcgSig = sizeEcgSig*interval;
+%plot(tm', val');
+
+%for i = 1:length(signal)
+%    labels{i} = strcat(signal{i}, ' (', units{i}, ')'); 
+%end
+
+%legend(labels);
+%xlabel('Time (sec)');
+% grid on
+
+% load annotations
+
+annotationName = strcat(Name, '.txt');
+fid = fopen(annotationName, 'rt');
+% was annotationsEcg = textscan(fid, '%d:%f %d %*c %*d %*d %*d %s', 'HeaderLines', 1, 'CollectOutput', 1);
+ann = textscan(fid, '%d:%f %d %c %d %d %d %s', 'HeaderLines', 1, 'CollectOutput', 1);
+fclose(fid);
+
+
+end
\ No newline at end of file