Skip to main content
. 2022 Jan 25;22(3):919. doi: 10.3390/s22030919
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)