Switch to side-by-side view

--- a
+++ b/featurebased-approach/subfunctions/ecgsqi.m
@@ -0,0 +1,76 @@
+function feats = ecgsqi(signal,qrs,fs)
+% This function calculates multiple SQIs for electrocardiogram (ECG) signals.
+%
+% Input:
+%     signal            ECG signal (function only supports vectors)
+%     fs                sampling frequency (in Hz)
+%
+% Output:
+%     sqi               Resulting SQI for ABP signal
+%    qrs_out            QRS samplestamps
+%
+%
+% --
+% ECG classification from single-lead segments using Deep Convolutional Neural 
+% Networks and Feature-Based Approaches - December 2017
+% 
+% Released under the GNU General Public License
+%
+% Copyright (C) 2017  Fernando Andreotti, Oliver Carr
+% University of Oxford, Insitute of Biomedical Engineering, CIBIM Lab - Oxford 2017
+% fernando.andreotti@eng.ox.ac.uk
+%
+% 
+% For more information visit: https://github.com/fernandoandreotti/cinc-challenge2017
+% 
+% Referencing this work
+%
+% Andreotti, F., Carr, O., Pimentel, M.A.F., Mahdi, A., & De Vos, M. (2017). 
+% Comparing Feature Based Classifiers and Convolutional Neural Networks to Detect 
+% Arrhythmia from Short Segments of ECG. In Computing in Cardiology. Rennes (France).
+%
+% Last updated : December 2017
+% 
+% This program is free software: you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation, either version 3 of the License, or
+% (at your option) any later version.
+% 
+% This program is distributed in the hope that it 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, see <http://www.gnu.org/licenses/>.
+
+%% Parameters
+WIN_ACCEPT = 0.10;    % acceptance interval for FP in QRS detection (in s)
+WIN_QRS = 0.1;         % window used to delimit QRS complexes (in s)
+
+% Temporal SQIs
+% feat_flat = flatsqi(signal);  % flatline detection
+feat_stdsqi  = stdsqi(signal);   % standard deviation
+feat_ksqi  = ksqi(signal);   % standard deviation
+feat_ssqi  = ssqi(signal);   % standard deviation
+
+% Frequency bands
+feat_psqi = psqi(signal,fs,[15 45],[0 100]);
+
+% Detection-based SQIs
+combs = nchoosek(1:length(qrs),2);
+combs = num2cell(combs,2);
+feat_bsqi = cellfun(@(x) bsqi(qrs{x(1)},qrs{x(2)},WIN_ACCEPT,fs),combs);
+feat_rsqi = arrayfun(@(x) rsqi(qrs{x},fs,0.96),1:length(qrs));
+feat_csqi = arrayfun(@(x) csqi(signal,qrs{x},fs,WIN_QRS),1:length(qrs));
+feat_xsqi = arrayfun(@(x) xsqi(signal,qrs{x},fs,WIN_QRS),1:length(qrs));
+
+
+feats = [feat_stdsqi, feat_ksqi, feat_ssqi, ...
+    feat_psqi, feat_bsqi', feat_rsqi, feat_csqi, feat_xsqi];
+
+feats(isnan(feats)) = 0; % making sure there are no NaNs
+
+
+
+