Learn R Programming

photobiology (version 0.11.3)

Rfr_normdiff: reflectance:reflectance normalised difference

Description

This function returns the reflectance normalized difference index for a given pair of wavebands of a reflector spectrum.

Usage

Rfr_normdiff(
  spct,
  w.band.plus,
  w.band.minus,
  scale.factor,
  wb.trim,
  use.cached.mult,
  use.hinges,
  ...
)

# S3 method for default Rfr_normdiff( spct, w.band.plus, w.band.minus, scale.factor, wb.trim, use.cached.mult, use.hinges, ... )

# S3 method for reflector_spct Rfr_normdiff( spct, w.band.plus = NULL, w.band.minus = NULL, scale.factor = 1, wb.trim = getOption("photobiology.waveband.trim", default = TRUE), use.cached.mult = FALSE, use.hinges = NULL, quantity = "mean", naming = "short", name.tag = NULL, ... )

# S3 method for reflector_mspct Rfr_normdiff( spct, w.band.plus = NULL, w.band.minus = NULL, scale.factor = 1, wb.trim = getOption("photobiology.waveband.trim", default = TRUE), use.cached.mult = FALSE, use.hinges = NULL, quantity = "mean", naming = "short", name.tag = NULL, ..., attr2tb = NULL, idx = "spct.idx", .parallel = FALSE, .paropts = NULL )

Value

In the case of methods for individual spectra, a numeric

vector with name attribute set. The name is based on the name of the wavebands unless a named list of wavebands is supplied in which case the names of the list elements are used. "[Rfr:Rfr]" is appended if quantity = "total" and "[Rfr(wl):Rfr(wl)]" if quantity = "mean" or

quantity = "average".

A data.frame is returned in the case of collections of spectra, containing one column for each fraction definition, an index column with the names of the spectra, and optionally additional columns with metadata values retrieved from the attributes of the member spectra.

Fraction definitions are "assembled" from the arguments passed to

w.band.num and w.band.denom. If both arguments are lists of waveband definitions, with an equal number of members, then the wavebands are paired to obtain as many fractions as the number of wavebands in each list. Recycling for wavebands takes place when the number of denominator and numerator wavebands differ.

Arguments

spct

an object of class "reflector_spct".

w.band.plus, w.band.minus

waveband object(s) or a list(s) of waveband objects used to compute the additive and subtractive reflectance terms of the normalized difference index.

scale.factor

numeric vector of length 1, or length equal to that of w.band. Numeric multiplier applied to returned values.

wb.trim

logical if TRUE wavebands crossing spectral data boundaries are trimmed, if FALSE, they are discarded

use.cached.mult

logical indicating whether multiplier values should be cached between calls

use.hinges

logical Flag indicating whether to insert "hinges" into the spectral data before integration so as to reduce interpolation errors at the boundaries of the wavebands.

...

other arguments (possibly ignored)

quantity

character One of "total", "average" or "mean".

naming

character one of "long", "default", "short" or "none". Used to select the type of names to assign to returned value.

name.tag

character Used to tag the name of the returned values.

attr2tb

character vector, see add_attr2tb for the syntax for attr2tb passed as is to formal parameter col.names.

idx

character Name of the column with the names of the members of the collection of spectra.

.parallel

if TRUE, apply function in parallel, using parallel backend provided by foreach

.paropts

a list of additional options passed into the foreach function when parallel computation is enabled. This is important if (for example) your code relies on external data or packages: use the .export and .packages arguments to supply them so that all cluster nodes have the correct environment set up for computing.

Methods (by class)

  • Rfr_normdiff(default): Default for generic function

  • Rfr_normdiff(reflector_spct): Method for reflector_spct objects

  • Rfr_normdiff(reflector_mspct): Calculates Rfr:Rfr from a reflector_mspct object.

Details

With the default quantity = "mean" or quantity = "average" the ratio is based on two mean spectral photon reflectances, one computed for each waveband.

$$\frac{\overline{\mathrm{Rfr}_\lambda}(s, wb_\mathrm{plus}) - \overline{\mathrm{Rfr}_\lambda}(s, wb_\mathrm{minus})}{\overline{\mathrm{Rfr}_\lambda}(s, wb_\mathrm{plus}) + \overline{\mathrm{Rfr}_\lambda}(s, wb_\mathrm{minus})}$$

If the argument is set to quantity = "total" the fraction is based on two photon reflectances, one computed for each waveband.

$$\frac{\mathrm{Rfr}(s, wb_\mathrm{plus}) - \mathrm{Rfr}(s, wb_\mathrm{minus})}{\mathrm{Rfr}(s, wb_\mathrm{plus}) + \mathrm{Rfr}(s, wb_\mathrm{minus})}$$

Only if the wavelength expanse of the two wavebands is the same, these two ratios are numerically identical.

See Also

normalized_diff_ind, accepts different summary functions.

Other Reflectance ratio functions: Rfr_fraction(), Rfr_ratio()

Examples

Run this code
Rfr_normdiff(Ler_leaf_rflt.spct,
             waveband(c(400,500), wb.name = "Blue"),
             waveband(c(600,700), wb.name = "Red"))
Rfr_normdiff(Ler_leaf_rflt.spct,
             waveband(c(400,500), wb.name = "Blue"),
             waveband(c(600,700), wb.name = "Red"),
             quantity = "total")
Rfr_normdiff(Ler_leaf_rflt.spct,
             waveband(c(400,500), wb.name = "Blue"),
             waveband(c(600,700), wb.name = "Red"),
             quantity = "mean")

Run the code above in your browser using DataLab