Skip to contents

The wavelength vectors of the two spectra are merged, and the missing spectral values are calculated by interpolation. After this, the two spectral values at each wavelength are operated upon.

Usage

div_spectra(
  w.length1,
  w.length2 = NULL,
  s.irrad1,
  s.irrad2,
  trim = "union",
  na.rm = FALSE
)

Arguments

w.length1

numeric vector of wavelength (nm) of denominator.

w.length2

numeric vector of wavelength (nm) of divisor.

s.irrad1

a numeric vector of spectral values of denominator.

s.irrad2

a numeric vector of spectral values of divisor.

trim

a character string with value "union" or "intersection".

na.rm

a logical value, if TRUE, not the default, NAs in the input are replaced with zeros.

Value

a dataframe with two numeric variables.

w.length

A numeric vector with the wavelengths (nm) obtained by "fusing" w.length1 and w.length2. w.length contains all the unique vales, sorted in ascending order.

s.irrad

A numeric vector with the ratio between the two spectral values at each wavelength.

Details

If trim=="union" spectral values are calculated for the whole range of wavelengths covered by at least one of the input spectra, and missing values are set in each input spectrum to zero before addition. If trim=="intersection" then the range of wavelengths covered by both input spectra is returned, and the non-overlapping regions discarded. If w.length2==NULL, it is assumed that both spectra are measured at the same wavelengths, and a simple addition is used, ensuring fast calculation.

Examples


head(sun.data)
#>   w.length    s.e.irrad    s.q.irrad
#> 1      293 2.609665e-06 6.391823e-12
#> 2      294 6.142401e-06 1.509586e-11
#> 3      295 2.176175e-05 5.366463e-11
#> 4      296 6.780119e-05 1.677650e-10
#> 5      297 1.533491e-04 3.807237e-10
#> 6      298 3.669677e-04 9.141478e-10
one.data <- with(sun.data, div_spectra(w.length, w.length, s.e.irrad, s.e.irrad))
head(one.data)
#> # A tibble: 6 × 2
#>   w.length s.irrad
#>      <dbl>   <dbl>
#> 1      293       1
#> 2      294       1
#> 3      295       1
#> 4      296       1
#> 5      297       1
#> 6      298       1
tail(one.data)
#> # A tibble: 6 × 2
#>   w.length s.irrad
#>      <dbl>   <dbl>
#> 1      795       1
#> 2      796       1
#> 3      797       1
#> 4      798       1
#> 5      799       1
#> 6      800       1