sma
|
Contents: Citation, Description, Arguments, Usage, Examples, Sub-Functions, Related Functions, Source Supported Under Version: > 1.14
Citation Spectral Mixture Analysis:
Surface Atmosphere Separation (surface=1):
Error Calculation (noerr=0):
Nonnegative Least Squares (nn=1):
Description Spectral mixture analysis. Accepts individual spectra or spectral cubes. See sma_tutorial() for several example cases. As of version 1.14, this function now includes an option to use a Non-Negative Least Squares fitting routine, which is faster and more accurate than the original routine.
Arguments and Return Values arg1 = Mixed spectrum or spectra (may also take a standard structure with .data and .xaxis elements) arg2 = Spectral library. May be an array, or a structure with at least the following elements: .data, .label, and .xaxis. Library must be arranged [specs-x, specs-y, bands]. Xaxis (if input is a structure) must be arranged [1, 1, bands]. [arg3 =] (optional) library of spectra to be forced despite negative concentrations (must be same format as arg2)
surface = 1 for atm-removed and modeled surface spectra in addition to normal output wave1 = wavenumber/micron/channel value for modeling (low); default is 400 cm-1 wave2 = wavenumber/micron/channel value for modeling (high); default is 1600 cm-1 band = 1 if wave1 and wave2 are given in channel numbers, instead of frequency (cm-1) or wavelength bb = 0 do not add blackbody to endmember matrix; bb added by default group = 1 additional output of model-derived modes summed by mineral group (eg. feldspar abundance, pyroxene abundance). $2 must contain .group. (not recommended for large cubes). Default is 1. forceall = 1 to keep negative endmember percentages exclude = vector list of endmembers to exclude (ex:2//39//40). noerr = 1 do not calculate statistical errors (recommended for large cubes) resample = 1 resample the mixed cube structure to the endmember library (default=0) resample = 2 resample the endmember library to the mixed cube structure (default=0) sort = 1 if you want abundances sorted for each pixel; default is sorting notchco2 = 1 automatically remove CO2 band in data/library/forced centered at 669 +/- 74 wn notchco2 = N remove CO2 band in data/library/forced centered at 669 +/- N wn (Default is 0) nn = 1 Use the non-negative least squares fitting routine (NNLS, faster and more accurate than original routine) to unmix the spectra.
Usage Syntax: sma(mixed, lib, [forcedlib],[surface],[wave1],[wave2],[band],[bb],[group],[forceall],[exclude],[noerr],[resample],[nn]) Errors/Messages: “$1 and $2 must have the same z-dimension.” “$2 and $3 must have the same z-dimension.” --Your librar(ies) must have the same number of channels as your mixed spectrum. “$2 and $3 must both have labels or both not have labels.” “$2 and $3 must both have group labels or both not have group labels.” --Your mineral library and atmospheric library must be of the same format. If one is a structure with labels, group labels, etc., then the other must be. “You have more endmembers than bands”. --Your library is too big. You must have no more endmembers than the number of channels minus one. "The library does not have .group. Concentrations will not be grouped” --This means you tried to use the group=1 option but your library does not have .group. “No wavenumber x-axis found. Using full spectral range.” --Your library has no .xaxis field, but you tried to specify a wavenumber range. Defaults to full range of channels. “Structure does not contain member: group” --You may safely ignore.
Examples dv> library
struct, 4 elements
data: 44x1x73 array of float, bsq format [12,848 bytes]
label: Text Buffer with 44 lines of text
1: Quartz BUR-4120
2: Microcline BUR-3460
3: Albite WAR-0235
4: Oligoclase BUR-060D
5: Andesine WAR-0024
6: Labradorite BUR-3080A
7: Bytownite WAR-1384
8: Anorthite BUR-340
9: Bronzite NMNH-93527
10: Enstatite HS-9.4B
xaxis: 1x1x73 array of double, bsq format [584 bytes]
group: Text Buffer with 44 lines of text
1: Quartz
2: K-Feldspar
3: Plagioclase
4: Plagioclase
5: Plagioclase
6: Plagioclase
7: Plagioclase
8: Plagioclase
9: Orthopyroxene
10: Orthopyroxene
dv> atmlib
struct, 4 elements
data: 6x1x73 array of float, bsq format [1,752 bytes]
label: Text Buffer with 6 lines of text
1: Dust Low CO2
2: Dust High CO2
3: Water Ice Cloud (High Latitude)
4: Water Ice Cloud (Low Latitude)
5: co2 dust
6: h2o dust
xaxis: 1x1x73 array of float, bsq format [292 bytes]
group: Text Buffer with 6 lines of text
1: Atmosphere
2: Atmosphere
3: Atmosphere
4: Atmosphere
5: Atmosphere
6: Atmosphere
dv> mixspec 180x70x73 array of float, bsq format [3,679,200 bytes] Example 1: Exclude endmembers 2, 9, and 44, from library. Unmix entire cube between 250-1305 cm-1. Return atmospherically corrected
emissivity spectra. Group endmember concentrations using .group in library.
dv> final=sma(mixspec,library,atmlib,wave1=250,wave2=1305,surface=1,exclude=2//9//44, group=1)
Division by zero, 130049 times
struct, 18 elements Explanation of output
forcedlib: struct, 4 elements #forcedlib: the 3rd argument (input)
data: 6x1x73 array of float, bsq format [1,752 bytes]
group: Text Buffer with 6 lines of text
1: Atmosphere
2: Atmosphere
3: Atmosphere
4: Atmosphere
5: Atmosphere
6: Atmosphere
label: Text Buffer with 6 lines of text
1: Dust Low CO2
2: Dust High CO2
3: Water Ice Cloud (High Latitude)
4: Water Ice Cloud (Low Latitude)
5: co2 dust
6: h2o dust
xaxis: 1x1x73 array of float, bsq format [292 bytes]
excluded: 3x1x1 array of int, bsq format [12 bytes] #excluded: the list of excluded vectors (input)
bb: 180x70x1 array of float, bsq format [50,400 bytes] #bb: blackbody concentration (derived)
bberror: 180x70x1 array of float, bsq format [50,400 bytes] #bberror: statistical error associated with bb concentration (derived)
normconc: 180x70x47 array of float, bsq format [2,368,800 bytes] #normconc: concentrations normalized for bb (derived)
modsur: 180x70x73 array of float, bsq format [3,679,200 bytes] #modsur: modeled surface emissivity (derived)
rematm: 180x70x73 array of float, bsq format [3,679,200 bytes] #rematm: surface emissivity (derived)
measured: 180x70x73 array of float, bsq format [3,679,200 bytes] #measured: emissivity (input)
modeled: 180x70x73 array of float, bsq format [3,679,200 bytes] #modeled: modeled emissivity (derived)
conc: 180x70x50 array of float, bsq format [2,520,000 bytes] #conc: library spectrum concentrations (derived)
rms: 180x70x1 array of float, bsq format [50,400 bytes] #rms: root-mean-square error (derived)
nsamples: 71 #nsamples: number of samples used for modeling (input)
endlib: struct, 11 elements #endlib: the 2nd argument (input)
data: 44x1x73 array of float, bsq format [12,848 bytes]
group: Text Buffer with 44 lines of text
1: Quartz
2: K-Feldspar
3: Plagioclase
4: Plagioclase
5: Plagioclase
6: Plagioclase
7: Plagioclase
8: Plagioclase
9: Orthopyroxene
10: Orthopyroxene
label: Text Buffer with 44 lines of text
1: Quartz BUR-4120
2: Microcline BUR-3460
3: Albite WAR-0235
4: Oligoclase BUR-060D
5: Andesine WAR-0024
6: Labradorite �BUR-3080A
7: Bytownite WAR-1384
8: Anorthite BUR-340
9: Bronzite NMNH-93527
10: Enstatite HS-9.4B
xaxis: 1x1x73 array of double, bsq format [584 bytes]
error: 180x70x50 array of float, bsq format [2,520,000 bytes] #error: statistical error associated with conc (derived from
grouped: struct, 3 elements square root of diagonal of estimated covariance matrix)
grouped_conc: 180x70x20 array of float, bsq format [1,008,000 bytes] #grouped: grouped concentrations & associated errors (derived)
grouped_error: 180x70x20 array of float, bsq format [1,008,000 bytes]
grouped_labels: Text Buffer with 20 lines of text
1: Quartz
2: K-Feldspar
3: Plagioclase
4: Orthopyroxene
5: Pigeonite
6: Clinopyroxene
7: Olivine
8: Mica
9: Serpentine
10: Sheet-silicate
spectral_range: "Channels 3-73" #spectral_range: channels used for modeling (input)
wave1: 250 #wave1: low channel used for modeling (input)
wave2: 1305 #wave2: high channel used for modeling (input)
Example 2:Unmix one spectrum without atmospheric library, between channels 3 and 70. Group endmember concentrations using .group in
library. Do not return statistical errors for modeled concentrations.
dv> final=sma(mixspec[1,1],library,wave1=3,wave2=70,band=1,group=1,noerr=1)
Division by zero, 44 times
struct, 13 elements
forcedlib: struct, 1 elements
label: "none"
bb: 0.00000
normconc: 1x1x44 array of float, bsq format [176 bytes]
measured: 1x1x73 array of float, bsq format [292 bytes]
modeled: 1x1x73 array of float, bsq format [292 bytes]
conc: 1x1x44 array of float, bsq format [176 bytes]
rms: 0.00000
nsamples: 68
endlib: struct, 11 elements
data: 44x1x73 array of float, bsq format [12,848 bytes]
group: Text Buffer with 44 lines of text
1: Quartz
2: K-Feldspar
3: Plagioclase
4: Plagioclase
5: Plagioclase
6: Plagioclase
7: Plagioclase
8: Plagioclase
9: Orthopyroxene
10: Orthopyroxene
label: Text Buffer with 44 lines of text
1: Quartz BUR-4120
2: Microcline BUR-3460
3: Albite WAR-0235
4: Oligoclase BUR-060D
5: Andesine WAR-0024
6: Labradorite �BUR-3080A
7: Bytownite WAR-1384
8: Anorthite BUR-340
9: Bronzite NMNH-93527
10: Enstatite HS-9.4B
xaxis: 1x1x73 array of double, bsq format [584 bytes]
grouped: struct, 3 elements
grouped_conc: 1x1x19 array of float, bsq format [76 bytes]
grouped_error: 1x1x19 array of float, bsq format [76 bytes]
grouped_labels: Text Buffer with 19 lines of text
1: Quartz
2: K-Feldspar
3: Plagioclase
4: Orthopyroxene
5: Pigeonite
6: Clinopyroxene
7: Olivine
8: Mica
9: Serpentine
10: Sheet-silicate
spectral_range: "Channels 3-70"
wave1: 3
wave2: 70
|
DavinciWiki Mini-Nav Bar Contents
Contact Developers
All other topics
Related Functions
Recent Library Changes Created On: 01-29-2008 |