Wlsbaseline
Jump to navigation
Jump to search
Purpose
Weighted least squares baseline function.
Synopsis
- [bldata,wts,baseline,vweights] = wlsbaseline(data,baseline,options)
- [bldata,wts,baseline,vweights] = wlsbaseline(data,order,options)
- [bldata] = wlsbaseline(data,lambda,options); %Whittaker
Description
Subtracts a baseline (or other signal) from a spectrum (row) using an iterative asymmetric least squares algorithm. Points with residuals <0 are up-weighted at each iteration of the least squares fitting (this corresponds to the default options.trbflag='bottom'). The result is a robust "non-negaitve" residual fit when residuals of significant amplitude are present (i.e., signal is present on a background).
There are several different filters are available, defined using the "filter" parameter:
- 'basis' = baseline subtraction using either specified vectors, or a polynomial basis. This algorithms is generally slower but introduces fewer artifacts.
- 'whittaker' = baseline subtraction using the Eilers' method based on a Whittaker filter. This algorithm is fast and handles more structured baselines, but can introduce peak shape artifacts (Eilers, Paul HC, and Hans FM Boelens. "Baseline correction with asymmetric least squares smoothing." Report (Leiden University Medical Centre, 2005) (2005). )
Inputs
- data = MxN data to be baselined - each ROW is baselined.
- baseline = 1xN reference spectrum (or KxN spectra) to use for baseline.
- An integer scalar value (order) corresponding to the order of polynomial baseline to use.
- A scalar value (lambda) indicating required smoothness to use with algorithm 'whittaker' when using the Eilers' method of baseline removal.
Outputs
- bldata = MxN baselined data.
- wts = Weights corresponding the amount of baseline removed from each spectrum (i.e. bldata = data - wts*baseline). If (baseline == polynomial order), wts contains the polynomial coefficients. Each row of (wts) can be used with the "baseline" output (see below) to obtain the baseline removed from the corresponding row of data. Note that wts can also be used with the POLYVAL function to reconstruct the baseline, however, a normalization factor of 1./sqrt(n) must be used on each baseline to correct for the number of variables (n).
- baseline = Baseline used for each spectrum. Note: this is the input (baseline) or polynomial basis.
- vweights = Variable weights used for each spectrum. Indicates the weighting used on each variable in each spectrum.
Options
- plots : [{'none'} | 'debug' | 'intermediate' | 'final'] governs plots
- filter : [ 'basis' | 'whittaker' ] governs baseline filter type.
- 'basis' uses a set of basis vectors fit to each spectrum. Input (baseline) specifies either a polynomial order or the specific baselines to use.
- 'whittaker' uses the Whittaker piecewise filter. Input (baseline) specifies the lambda smoothness.
- weightmode : [ {1} | 2 ] flag indicating which weighting mode to use.
- Mode 1 = Power method. Negative residuals are weighted up by the power of . All residuals are then raised to the power of (option.power)
- Mode 2 = T squared method. Negative residuals are weighted up by the extent to which the surpass an estimate of the noise limit and the approximate t-limit defined by (option.tsqlim)
- trbflag : [ 'bottom' | 'top' ] baseline to top or bottom of data
- negw : {1} deweighting scale of negative values () (used only for weightmode = 1),
- power : {2} exponential amplification of residuals (used only for weightmode = 1),
- p : {0.001} asymmetry (used only with algorithm = 'whittaker'),
- tsqlim : [0.99] t-test confidence limit for significant negative residuals which need to be up-weighted. (used only for weightmode = 2).
- nonneg : ['no'|{'yes'}] flag to force non-negative baseline weighting, most often used when "real" spectra are used for baslineing and they should not be "flipped" by a negative weighting. Using nonneg = 'yes', WLSBASELINE an be used as a partial CLS prediction to estimate the concentration of a species when not all species' pure component spectra are known.
- delta : [1e-4] change-of-fit convergence criterion. Iterations are stopped when the relative change in fit is less than this value.
- maxiter : [100] maximum iterations allowed per spectrum,
- maxtime : [600] maximum time (in seconds) permitted for baselining of all data.