[spd_out] = SplineSpd(wls_in, spd_in, wls_out, [extend])
Convert the wavelength representation of a spectral power distribution.
Takes change of deltaLambda into account to keep matrix computations
consistent across wavelength samplings.
That is, the splining handles conversion of power units according to to
the wavelength sampling deltaWl. Power is assumed to be in units of power
per wlband on input, and this convention is maintained on output. This
convention, used widely in PTB, means that you can omit the
multiplication by deltaWl when numerically integrating over wavelength,
but is a little counterintuitive.
Note that splining to 1 nm spacing puts the units into power per nm, as
at 1 nm spacing the two conventions are the same.
Handling of out of range values:
extend == 0: Cubic spline, extends with zeros [default]
extend == 1: Cubic spline, extends with last value in that direction
extend == 2: Linear interpolation, linear extrapolation
spd_in may have multiple columns, in which case spd_out does as well.
wls_in and wls_out may be specified as a column vector of
wavelengths or as a [start delta n] description.
If wls_out is passed as a vector of wavelengths with just one sample, we don’t
know what the wavelength sampling is, and we can’t do the conversion of
power per wavelength band. This condition is checked for and an error is
thrown. The fix is to pass the wavelengths as an S vector
S = [theWavelength wavelengthBandWidth 1].
This forces an explicit value for the wavelength band width.
5/6/98 dhb Change normalization method so that sum is constant.
This is a little closer to the desired result for
functions with big derivatives.
12/7/98 dhb Remove 5/6/98 change, as it produces the wrong power
when you spline across different wavelength regions.
7/26/03 dhb Add extend argument and pass to SplineRaw.
8/13/11 dhb Update comment to reflect changes in SplineRaw.
5/10/12 dhb Small comment fix
1/15/18 dhb Can’t believe I wrote this more than 20 years ago!
dhb Put in error check for single wavelength value pass.