--- a
+++ b/preprocessOfApneaECG/BioSigKit/Demo.m
@@ -0,0 +1,116 @@
+%% =============== Demo ======================== %%
+%% ============== Licensce ========================================== %%
+% THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
+% "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
+% LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
+% FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+% OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
+% SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+% TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
+% PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 
+% LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 
+% NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 
+% SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+% Author :
+% Hooman Sedghamiz, Feb, 2018
+% MSc. Biomedical Engineering, Linkoping University
+% Email : Hooman.sedghamiz@gmail.com
+%--------------- Only Hit the Run button -----------------%
+
+%% ===================== DEMO FOR QRS DETECTORS ======================== %%
+%---------------- Load a Sample ECG Signal from (\SampleSignals) directory -----------------%
+slashchar = char('/'*isunix + '\'*(~isunix)); 
+load([fileparts(which(mfilename)),slashchar,'SampleSignals',slashchar,...
+    'ECG1.mat']);
+addpath(genpath(fileparts(which(mfilename))));
+load('ECG1.mat');
+% ------------------ Call the BioSigKit Wrapper -------------------%
+Analysis = RunBioSigKit(EKG1,250,0);          % Uses ECG1 as input,Fs=250
+%-------------------- Call Pan Tompkins Algorithm ------------------- %
+Analysis.MTEO_qrstAlg;                        % Runs MTEO algorithm
+QRS = Analysis.Results.R;                     % Stores R peaks in QRS
+%-------------------- Call MTEO QRS ------------------- %
+Analysis.MTEO_qrstAlg;                        % Runs MTEO algorithm
+QRS = Analysis.Results.R;                     % Stores R peaks in QRS
+Qwave = Analysis.Results.Q;                   % Indice of Q peaks
+Swave = Analysis.Results.S;                   % Indice of S peaks
+Twave = Analysis.Results.T;                   % Indice of T peaks
+Pwave = Analysis.Results.P;                   % Indice of P peaks
+% ------------------------ Change Sample rate ------------------%
+Analysis.Fs =360;
+
+%--------------------------- Open GUI -----------------------------%
+% Analysis = RunBioSigKit();                    % Opens GUI 
+
+
+%% ==================  DEMO FOR OTHER SUBROUTINES =================== %%
+% ----------------- Activity detection with hilber Transform -------------%
+Analysis.PlotResult = 1;                           % Set the plot flag on
+Analysis.Env_hilbert;                              % detect activities
+
+v = repmat([.1*ones(200,1);ones(100,1)],[10 1]);   % generate true variance profile
+Analysis.Sig = sqrt(v).*randn(size(v));            % Add white noise
+Analysis.Env_hilbert;
+Analysis.Sig = EKG1;
+% ---------------- Compute mobility and complexity ------------------- %
+[mobility,complexity] = Analysis.ComputeHjorthP;
+fprintf(['Mobility = ',mat2str(mobility),'\n']);
+fprintf(['Complexity = ',mat2str(complexity),'\n']);
+%--------------------- Template matching -------------------------------%
+template = Analysis.Sig(QRS(2)-60:QRS(2)+100);          % extract a heart-beat
+[PsC_s,best_lag] = Analysis.TemplateMatch(template);    % Find it in the signal
+fprintf(['PsuedoScore = ',mat2str(PsC_s),'\n']);
+fprintf(['Location = ',mat2str(best_lag),'\n']);
+figure,plot(Analysis.Sig);
+hold on,plot((best_lag:best_lag+160),...
+    Analysis.Sig(best_lag:best_lag+160));               % Highlight the template in Sig
+title('PsuedoCorrelation Demo...');
+
+% ------- Fetal ECG extraction in real time with neural PCA -------------%
+load([fileparts(which(mfilename)),slashchar,'SampleSignals',slashchar,...
+    'foetal_ecg.dat']);                                  % Load Foeatal ECG
+Analysis.Sig = foetal_ecg(:,2:9)';                       % Load all the 8 channels
+[~,PC] = Analysis.neural_pca(8,2);                       % get the PCs
+figure;
+for i = 1: 5
+    subplot(5,1,i),plot(PC(i,:));
+end
+title('Foetal Beat detection with real-time neural-PCA...');
+% ------------------------- Adaptive Filters ---------------------------%
+Analysis.Sig = EKG1;
+Analysis.Fs=250;
+out = Analysis.adaptive_filter(2,[],250);                % Use adaptive line enhancer (type =2)
+figure,plot(Analysis.Sig/max(Analysis.Sig));
+hold on,plot(out/max(out));
+title('Adaptive Line Enhancer with 1 Sec Delay');
+
+% ------------------------- ECG derived Respiration --------------------%
+Analysis.PlotResult = 0;                           % Set the plot flag of0
+EDR = Analysis.EDR_comp;
+figure,plot(Analysis.Sig/max(Analysis.Sig));
+hold on,plot(EDR/max(EDR));
+title('ECG Derived Resp Signal');
+
+% ------- Single Channel Foetal ECG extraction with nonlinear filter -------------%
+Analysis.Sig = foetal_ecg(:,2)';                                  % Load channel 2
+Analysis.Fs=250;
+output = Analysis.nonlinear_phase_filt(1, 50, 45, 1500);          % run the filter
+figure,plot(Analysis.Sig);
+hold on,plot(Analysis.Sig - output);
+title('Foetal ECG extracted...');
+
+% ----------------- ACC derived respiration ----------------------% 
+load([fileparts(which(mfilename)),slashchar,'SampleSignals',slashchar,...
+    'ACC.mat']);
+Analysis.Sig = ACC';
+Analysis.Fs = 200;
+EDR = Analysis.ADR_comp;
+figure,plot(Analysis.Sig/max(Analysis.Sig));
+hold on,plot(EDR/max(EDR));
+title('ECG Derived Resp Signal');
+
+%---------------- ACC processing and Posture detection ---------------%
+[output,state,EE,F,SMA] = Analysis.ACC_Act;
+States ={'Steady','Slight Movement','High Activity'};
+fprintf(['State is ',States{state+1},' and Energy Expenditure = ',mat2str(EE),'\n']);
+