Code covered by the BSD License  

Highlights from
Method for quantitative absorption spectroscopy, version 2.1

image thumbnail

Method for quantitative absorption spectroscopy, version 2.1

by

Tom O'Haver

 

14 Aug 2006 (Updated )

A computational method for quantitative analysis by multiwavelength absorption spectroscopy

TFit3.m
% Interactive Explorer for multiwavelength absorption spectroscopy of a THREE
% component mixture. Compares quantitative measurement by weighted regression and
% TransFit methods.  Simulates photon noise and stray light and Izero shifts.

% Note: After executing this m-file, slide the Figure No. 1 and Figure No.
% 2 windows side-by-side so that they don't overlap.  

% You can adjust these (scalar) input variables in lines 41-45:
%    ArrayLength     Number of points in spectrum 
%    separation      Wavelength separation between the two components
%    width           Width of individual gaussian absorption bands within each spectrum 
%    InstWidth       Spectral Bandpas (resolution) of spectrometer 
%    absorbance[]    True absorbance of analytes [1,2,3]
%    noise           Fractional photon random noise on 100% intensity
%    IzeroShift      Random shift in 100% intensity (background absorption)
%    straylight      Fractional unabsorbed stray light (may be a constant or a
%                    spectrum of stray light values at each wavelength)
% List of Vectors:
% TSpectrum1,2,3 = true absorbance spectrum of component 1,2,3.
% ReferenceSpectrum1,2,3 = Broadened unit spectra of component 1,2,3.
% y = true transmission spectrum of mixture.
% InstFunction = instrument function 
% fa = Fourier transform of instrument function
% yobsd = noisy instrumentally broadened spectrum with noise, stray light
% f = frequency coordinate vector
% x = wavelength coordinate vector
% Functions called: Gaussian, broaden, fitMSpecConvThree (or other fitting function)
% Example: Just type TFit3 in the command window.
% Tom O'Haver (toh@umd.edu), August 2006.  Slider function by Matthew Jones.
clear
global x y z InstFunction linewidth absorbance InstWidth StrayLight 
global noise NoiseArray separation width IzeroShift 
close
figure(1);
clf
h=figure(1);
format compact

% Initial values of the user-adjustable parameters:
ArrayLength=100; % Number of points in the simulated arrays (spectra). Typically 50 - 1000
separation=ArrayLength/7; % Separation, in points, between the component spectra
width=ArrayLength/15;  % Width of the individual peaks within each spectrum
InstWidth=ArrayLength/10;   % Width of instrument function (spectral bandpass)
absorbance=[3 .1 5];  % Theoretical absorbances of the 3 components
noise=0.02;  % Random noise level when InstWidth = 1
IzeroShift=.01;  %  Random shift in 100% T intensity (background absorption)
StrayLight=0.01;  % Can be a scalar or a vector of length Arraylength

% Define frequency and wavelength coordinate vectors
x=[1:ArrayLength]';
TFit3Redraw(x,y,InstFunction,linewidth,absorbance,InstWidth,StrayLight,noise,NoiseArray,separation,width,IzeroShift)
h2=gca;  axis([.001 10 .001 10]);

% Draw the sliders and set the slider ranges, labels, initial positions, and
% associated functions called when moved
rtslid(h,@TFit3A1,h2,1,'Scale',[-2 1],'Def',log10(absorbance(1)),'Back',[1 1 1],'Label','A1(G)','Position',[0.03 0.7 0.03 0.22]);
rtslid(h,@TFit3A2,h2,1,'Scale',[-2 1],'Def',log10(absorbance(2)),'Back',[1 1 1],'Label','A2(B)','Position',[0.03 0.4 0.03 0.22]);
rtslid(h,@TFit3A3,h2,1,'Scale',[-2 1],'Def',log10(absorbance(3)),'Back',[1 1 1],'Label','A3(R)','Position',[0.03 0.1 0.03 0.22]);
rtslid(h,@TFit3separation,h2,0,'Scale',[0 ArrayLength/3],'Def',separation,'Back',[1 1 1],'Label','Sepn','Position',[0.95 0.7 0.03 0.22]);
rtslid(h,@TFit3InstWidth,h2,0,'Scale',[1 ArrayLength/5],'Def',InstWidth,'Back',[1 1 1],'Label','InstWidth','Position',[0.95 0.4 0.03 0.22]);
rtslid(h,@TFit3Noise,h2,0,'Scale',[0 .1],'Def',noise,'Back',[1 1 1],'Label','Noise','Position',[0.95 0.1 0.03 0.22]);

Contact us