Learn R Programming

EMSC (version 0.7)

EMSC: Extended multiplicative signal correction (EMSC)

Description

Performs model-based background correction and normalisation of spectra. EMSC handles variations in scaling, polynomial baselines and interferents. Parameters for corrections are stored for further analysis, and spectra are corrected accordingly.

Usage

EMSC(X, model = NULL, ...)

Arguments

X
matrix containing spectra as rows.
model
an EMSC model to use instead of the other parameters.
...
named model parameters for EMSC_model.

Value

  • An object of class EMSC is returned. This contains:
    • corrected:
    { matrix of corrected spectra.}
  • parameters:matrix of fitted parameter values.
  • model:object containing input all input parameters.

Details

This is the main EMSC function performing all calculations. It can be run with no parameters (defaults are used), with a predefined EMSC model object or with parameters that are passed on to the EMSC model building function EMSC_model.

References

H. Martens, E. Stark, Extended multiplicative signal correction and spectral interference subtraction: new preprocessing methods for near infrared spectroscopy. J Pharm Biomed Anal. 1991; 9(8):625-35.

See Also

EMSC_model

Examples

Run this code
data(milk)
Raman      <- milk$Raman[, 850:3300]
EMSC.basic <- EMSC(Raman)
EMSC.poly6 <- EMSC(Raman, degree = 6)
EMSC.ref   <- EMSC(Raman, degree = 6, reference = Raman[30, ])

old.par  <- par(mfrow = c(2,2), mar = c(4,4,1,1))
xlim     <- rev(as.numeric(range(colnames(Raman))))
matplot(colnames(Raman), t(Raman), type = 'l', xlim = xlim,
        ylab = 'Relative intensity', xlab = 'Raw spectra')
matplot(colnames(Raman), t(EMSC.basic$corrected), type = 'l', xlim = xlim,
        ylab = 'Relative intensity', xlab = 'Corrected (basic)')
matplot(colnames(Raman), t(EMSC.poly6$corrected), type = 'l', xlim = xlim,
        ylab = 'Relative intensity', xlab = 'Corrected (6th degree polynomial)')
matplot(colnames(Raman), t(EMSC.ref$corrected),   type = 'l', xlim = xlim,
        ylab = 'Relative intensity', xlab = 'Corrected (reference = spec. #30)')
par(old.par)

Run the code above in your browser using DataLab