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 |