Algorithm 1 Pseudo-Code: Baseline Drift Correction |
Inputs: X (Segmented Raw Signal) |
1.1.1. Check X is a Row Vector else X = Transpose (X) |
1.2.1. Initialize Time_Vector = Transpose (linspace(1, length(X), length(X))) |
2.1.1. try: |
2.2.1. [peaks, peak_locations] = findpeaks(X) |
2.3.1. Initialize peak_dist |
2.4.1. for i = 1: (length(peak_locations) − 1) |
2.4.2. peak_dist(i) = peak_locations(i + 1) − peak_locations(i) |
2.4.3. end for |
2.5.1. median_peak_dist = median (peak_dist) |
2.6.1. Baseline = movmin (X, median_peak_dist) |
2.7.1. P = polyfit (Time_Vector’, Baseline, round(median_peak_dist)) |
3.1.1. except: |
3.2.1. Initialize polynomial_order |
3.3.1. P = polyfit (Time_Vector’, X, polynomial_order) |
4.1.1. Baseline_Fit = polyval (P, Time_Vector’) |
4.2.1. Y = X – Baseline_Fit |
4.3.1. Y = Y – min(Y) |
4.4.1. X_amp = max(X) − min(X) |
4.5.1. Y_amp = max(Y) − min(Y) |
4.6.1. Y = Y*(X_amp/Y_amp) |
Outputs: Y (Baseline Corrected Signal) |