--- a
+++ b/preprocessOfApneaECG/computeFeatures.m
@@ -0,0 +1,41 @@
+function a = computeFeatures(file_path)
+% https://doi.org/10.21105/joss.00671
+% https://zenodo.org/badge/latestdoi/128659224
+addpath(genpath('G:\python project\apneaECGCode\preprocessOfApneaECG\BioSigKit'))
+read_path = strcat(file_path, '\denoised_ecg_data.mat');
+ecg_data = load(read_path);
+ecg_data_1 = ecg_data.denoised_ecg_data;
+a = 0;
+
+Analysis = RunBioSigKit(ecg_data_1, 100, 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 ------------------- %
+try
+    Analysis.MTEO_qrstAlg;                        % Runs MTEO algorithm
+    Qwave = Analysis.Results.Q;
+    Rwave = Analysis.Results.R;
+    Swave = Analysis.Results.S;
+    Twave = Analysis.Results.T;
+    Pwave = Analysis.Results.P;
+    EDR = Analysis.EDR_comp;
+    save_path = strcat(file_path, '\Qwave.mat');
+    save(save_path, 'Qwave');
+    save_path = strcat(file_path, '\Rwave.mat');
+    save(save_path, 'Rwave');
+    save_path = strcat(file_path, '\Swave.mat');
+    save(save_path, 'Swave');
+    save_path = strcat(file_path, '\Twave.mat');
+    save(save_path, 'Twave');
+    save_path = strcat(file_path, '\Pwave.mat');
+    save(save_path, 'Pwave');
+    save_path = strcat(file_path, '\EDR.mat');
+    save(save_path, 'EDR');
+    disp('Successfully.');
+catch
+    disp('it is noise.');
+end
+
+end
+