File indexing completed on 2024-05-12 03:47:50
0001 /* 0002 File : nsl_baseline.h 0003 Project : LabPlot 0004 Description : NSL baseline detection and subtraction methods 0005 -------------------------------------------------------------------- 0006 SPDX-FileCopyrightText: 2023 Stefan Gerlach <stefan.gerlach@uni.kn> 0007 SPDX-License-Identifier: GPL-2.0-or-later 0008 */ 0009 0010 #ifndef NSL_BASELINE_H 0011 #define NSL_BASELINE_H 0012 0013 #include <cstdlib> 0014 0015 /* remove mimimum base line from data */ 0016 void nsl_baseline_remove_minimum(double* data, size_t n); 0017 /* remove maximum base line from data */ 0018 void nsl_baseline_remove_maximum(double* data, size_t n); 0019 /* remove mean base line from data */ 0020 void nsl_baseline_remove_mean(double* data, size_t n); 0021 /* remove median base line from data */ 0022 void nsl_baseline_remove_median(double* data, size_t n); 0023 0024 /* remove base line through end points (first and last point). xdata and ydata must be of same size n */ 0025 int nsl_baseline_remove_endpoints(double* xdata, double* ydata, size_t n); 0026 0027 /* remove linear regression. xdata and ydata must be of same size n */ 0028 int nsl_baseline_remove_linreg(double* xdata, double* ydata, size_t n); 0029 0030 /* ALS algorithm, see https://irfpy.irf.se/projects/ica/_modules/irfpy/ica/baseline.html */ 0031 /* baseline correction by asymmetrically reweighted penalized least square (arPLS) */ 0032 /* returns reached tolerance */ 0033 double nsl_baseline_remove_arpls(double* data, size_t n, double p, double lambda, int niter); 0034 double nsl_baseline_remove_arpls_Eigen3(double* data, size_t n, double p, double lambda, int niter); 0035 double nsl_baseline_remove_arpls_GSL(double* data, size_t n, double p, double lambda, int niter); 0036 /* TODO: ALS - asymmetric least square, airPLS - adaptive iteratively reweighted Penalized Least Squares */ 0037 0038 #endif