The most basic signal processing functions are those that involve
simple signal arithmetic: point-by-point addition, subtraction,
multiplication, or division of two signals or of one signal and a
constant. Despite their mathematical simplicity, these functions can
be very useful. For example, in the left part of Figure 1 (Window 1)
the top curve is the absorption spectrum of an extract of a sample
of oil shale, a kind of rock that is is a source of petroleum.
Figure 1. A simple point-by--point subtraction of two
signals allows the background (bottom curve on the left) to be
subtracted from a complex sample (top curve on the left),
resulting in a clearer picture of what is really in the sample
(right). (X-axis = wavelength in nm; Y-axis = absorbance).
This spectrum exhibits two absorption
bands, at about 515 nm and 550 nm, that are due to a class of
molecular fossils of chlorophyll called porphyrins.
(Porphyrins are used as geomarkers in oil exploration). These
bands are superimposed on a background absorption caused by the
extracting solvents and by non-porphyrin compounds extracted from
the shale. The bottom curve is the spectrum of an extract of a
non-porphyrin-bearing shale, showing only the background
absorption. To obtain the spectrum of the shale extract without
the background, the background (bottom curve) is simply subtracted
from the sample spectrum (top curve). The difference is shown in
the right in Window 2 (note the change in Y-axis scale). In this
case the removal of the background is not perfect, because the
background spectrum is measured on a separate shale sample.
However, it works well enough that the two bands are now seen more
clearly and it is easier to measure precisely their absorbances
and wavelengths. (Thanks to Prof. David Freeman for the spectra of
oil shale extracts).
In this example and the one below,
the assumption is being made that the two signals in Window 1 have
the same x-axis values, that is, that both spectra are digitized
at the same set of wavelengths. Strictly speaking this
operation would not be valid if two spectra were digitized over
different wavelength ranges or with different intervals between
adjacent points. The x-axis values much match up point for
point. In practice, this is very often the case with data
sets acquired within one experiment on one instrument, but the
experimenter must take care if the instruments settings are
changed or if data from two experiments or two instrument are
combined. (Note: It is possible to use the mathematical
technique of interpolation
to change the number of points or the x-axis intervals of signals;
the results are only approximate but often close enough in
practice).
Sometimes one needs to know whether two
signals have the same shape, for example in comparing the spectrum
of an unknown to a stored reference spectrum. Most likely the
concentrations of the unknown and reference, and therefore the
amplitudes of the spectra, will be different. Therefore a direct
overlay or subtraction of the two spectra will not be useful. One
possibility is to compute the point-by-point ratio of the two
signals; if they have the same shape, the ratio will be a
constant. For example, examine Figure 2.
Figure 2. Do the two spectra on the left have the same
shape? They certainly do not look the same, but that may simply
be due to that fact that one is much weaker that the other. The
ratio of the two spectra, shown in the right part (Window 2), is
relatively constant from 300 to 440 nm, with a value of 10 +/-
0.2. This means that the shape of these two signals is very
nearly identical over this wavelength range.
The left part (Window 1) shows two superimposed spectra, one of
which is much weaker than the other. But do they have the same
shape? The ratio of the two spectra, shown in the right part
(Window 2), is relatively constant from 300 to 440 nm, with a
value of 10 +/- 0.2. This means that the shape of these two
signals is the same, within about +/-2 %, over this wavelength
range, and that top curve is about 10 times more intense than the
bottom one. Above 440 nm the ratio is not even approximately
constant; this is caused by noise, which is the subject of
the next section.
SPECTRUM,
the freeware signal-processing application for Macintosh OS8,
includes the following signal arithmetic functions: addition and
multiplication with constant; addition, subtraction, multiplication,
and division of two signals, normalization, and a large number of
other basic functions (common and natural log and antilog,
reciprocal, square root, absolute value, standard deviation, etc.)
in the Math
menu.
Popular spreadsheets, such
as Excelor Open Office Calc, have
built-in functions for all common math operations, named variables,
x,y plotting, text formatting, matrix math, etc. Cells can contain
numerical values, text, mathematical expression, or references
to other cells. A vector of values such as a spectrum can be
represented as a row or column of cells; a rectangular array of
values such as a set of spectra can be represented as a
rectangular block of cells. User-created names can be assigned
to individual cells or to ranges of cells, then referred to in
mathematical expression by name. Mathematical expressions can be
easily copied across a range of cells, with the cell references
changing or not as desired. Plots of various types can be created by
menu selection. See http://www.youtube.com/watch?v=nTlkkbQWpVk
for a nice video demonstration. Both Excel and Calc
offer a form design capability with full set of user interface
objects such as buttons, menus, sliders, and text boxes; these can
be user to create attractive graphical user interfaces for end-user
applications, such as in http://terpconnect.umd.edu/~toh/models/.
The latest versions of both Excel (Excel
2013) and OpenOffice Calc
(3.4.1) can open and save each other's spreadsheet file formats
(.xls and .ods, respectively). Simple spreadsheets in either format
are compatible with the other program. However, there are small
differences in the way that certain functions are interpreted, and
for that reason I supply most of my spreadsheets in .xls (for Excel) and in .ods (for Calc) formats. See "Differences
between the OpenDocument Spreadsheet (.ods) format and the Excel
(.xlsx) format". Basically, Calc
and do everything Excel
can do, but Calc is free
to download and is more Windows-standard in terms of
look-and-feel. Excel is more "Microsoft-y".
Matlab is a
commercial numerical computing environment and programming language
in which a single variable can represent either a single "scalar"
value, a vector of values
(such as a spectrum or a chromatogram), or a matrix (a rectangular array of
values, such as a set of spectra). This greatly facilitates
mathematical operations on signals. For example, if you have a
spectrum in the variable a, you
can plot it just by typing"plot(a)". And if you also had a vector wof x-axis values (such as wavelengths), you can plot a vs w by typing "plot(w,a)".
The subtraction of two spectra a
and b, as in Figure 1, can be
performed simply by writing a-b.
To plot the difference, you would write "plot(a-b)". Likewise, to
plot the ratio of two spectra, as in Figure 2, you would write "plot(a./b)". So, "./" means divide
point-by-point and ".*" means multiply point-by-point. Typing "b\a"
will compute the "matrix
right divide", in effect the weighted average ratio of the
amplitudes of the two vectors (a type of least-squares best-fit
solution), which in the example in Figure 2 will be a number close
to 10.
You can easily import
your own data into Matlab by using the load command
or by using the convenient Matlab
Import Wizard by clicking File
> Import Data. Data can be imported from text
files and from spreadsheets. GNU Octave is a
free alternative to Matlab that is "mostly
compatible". In fact, almost
all of the Matlab functions, scripts, demos, and examples in this
document will work in the latest version of Octave without change.
(The exceptions are the keystroke-operated interactive iPeak,
iSignal, and ipf.m). There is a FAQ that may help in porting
Matlab programs to Octave. See Key
Differences Between Octave & Matlab. There are Windows,
Mac, and Unix versions of Octave; the Windows version can be
downloaded from Octave
Forge; be sure to install all the "packages". There is lots of
help online: Google "GNU
Octave" or see the YouTube
videos for help. The current version of Octave (3.6) does not
run in a graphical user interface as Matlab does, but there are
several 3rd-party graphical front ends,
and there is the expectation
that Octave version 4 will eventually have an official graphical
user interface. Installation of Octave is somewhat more
laborious than installing a commercial package like Matlab. Octave
is also somewhat slower that Matlab computationally - about half as
fast for computations and about 5 times slower for 2D graphics (on
Windows 7 64 bit, 3.4 GHz core i7, 16 GBytes RAM). I am
working to make all my Matlab scripts and functions compatible with
Octave 3.6. Unfortunately, Octave
does not seem to run on Windows 8 at the present time.
Matlab is better, but if you can't
afford Matlab, Octave is 99% of the functionality for 0% of the
cost.
For signal processing, Matlab/Octave is faster and more powerful
than spreadsheets, but spreadsheets are easier for novices and offer
flexible presentation and user interface design. Spreadsheets are
concrete and more low-level, showing every single value explicitly
in a cell. Matlab/Octave is more high level and abstract,
because a single variable or function can do so much. As a result,
spreadsheets are easier at first, but sooner or later the
Matlab/Octave approach is more productive. This point is
demonstrated the comparison of both approaches to multilinear regression in
multicomponent spectroscopy (RegressionDemo.xls
vs the Matlab/Octave CLS.m), and particularly
by the dramatic difference between the spreadsheet
and Matlab/Octave
approaches to finding and measuring peaks in signals.
This page is maintained by Prof. Tom O'Haver ,
Department of Chemistry and Biochemistry, The University of Maryland
at College Park. Comments, suggestions and questions should be
directed to Prof. O'Haver at toh@umd.edu.
Unique visits since May 17, 2008: