From ea84478b29b706834e910abda5f53440f76b2df3 Mon Sep 17 00:00:00 2001 From: Uwe Kindler Date: Fri, 10 Aug 2018 11:10:25 +0200 Subject: [PATCH] Fixed peak removal to work like written in the Vancouver Raman Algorithm specification --- freeimodpoly.cpp | 7 ++++--- freeimodpoly.h | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/freeimodpoly.cpp b/freeimodpoly.cpp index 80c742c..edc54ab 100644 --- a/freeimodpoly.cpp +++ b/freeimodpoly.cpp @@ -83,7 +83,7 @@ uword FreeIModPoly::IModPoly(const vec &spectrum, double prev_dev = dev; //used in while loop critera //find major peak areas to remove and remove them - uvec non_peak_ind = NonPeakInd(spectrum, dev); + uvec non_peak_ind = NonPeakInd(spectrum, fit , dev); vec new_abscissa = abscissa(non_peak_ind); vec prev_fit = spectrum(non_peak_ind);//not a fit here, but in the loop. @@ -136,13 +136,14 @@ double FreeIModPoly::CalcDev(const vec &spectrum, const vec &fit) /// \param dev /// \return /// -uvec FreeIModPoly::NonPeakInd(const vec &spectrum, const double dev) +uvec FreeIModPoly::NonPeakInd(const vec &spectrum, const vec &fit, const double dev) { using namespace arma; - vec SUM = spectrum + dev * ones(spectrum.n_rows); + vec SUM = fit + dev * ones(fit.n_rows); return find(spectrum <= SUM); } + /// /// \brief FreeIModPoly::CalcPoly Calculate the values of a polynomial /// \param coefs The polynomial coefficients ordered from 0th order to nth order diff --git a/freeimodpoly.h b/freeimodpoly.h index 58e71f6..0489ef4 100644 --- a/freeimodpoly.h +++ b/freeimodpoly.h @@ -51,7 +51,7 @@ namespace FreeIModPoly{ const double threshold); double CalcDev(const vec &spectrum, const vec &fit); - uvec NonPeakInd(const vec &spectrum, const double dev); + uvec NonPeakInd(const vec &spectrum, const vec &fit, const double dev); vec CalcPoly(const vec &coefs, const vec &x); vec OrdinaryLeastSquares(const mat &X, const vec &y); mat Vandermonde(const vec &x, const int poly_order);