Interactive Differentiation using the iSignal function
iSignal is a Matlab function, written as a single self-contained m-file, for performing smoothing, differentiation and other useful functions on time-series data. Using simple keystrokes, you can adjust the signal processing parameters continuously while observing the effect on your signal dynamically. Click here to download a ZIP file that also includes some sample data for testing. You can also download it from the Matlab File Exchange.
To use it, just place
isignal.m in the Matlab path and type
>> isignal(DataMatrix); or
>> isignal(x,y); or
where DataMatrix is a matrix with x
values in the first row or column and y values in the
second. Press K
to see all the keyboard commands. Use the cursor arrow
keys to pan and zoom. To compute a derivative, press the D key, which cycles
through the derivative orders 0, 1, 2, 3, 4, and then back to 0.
Careful optimization of
smoothing of derivatives is critical for acceptable
signal-to-noise ratio. To smooth, press the S key to cycle
through four smoothing modes: "None"
(he signal is not smoothed), "Rect."
(sliding-average or boxcar), "Tri."
(triangle or 2 passes of sliding-average), "Gauss." (3 passes of
sliding-average). The A and Z keys control the SmoothWidth, w.
Press K to see all the keyboard commands.
|Interactive differentiation script for your own data, with sliders to control derivative order, smooth width, and scale expansion. Requires Matlab 6.5. To use it, place your signal in the global variables "x" and "signal" and then execute this m-file. Use the Order and Smooth sliders to change the derivative order and smooth width. Use the Scale slider to expand or contract the y-axis scale. The smoothed derivative is placed in global variable "derivative". The actual differentiation is performed by the function InteractiveDerivativeRedraw, which is called when the sliders are moved. If you wish, you can change the maximum range of the smooth width slider (MaxSmoothwidth in line 14) and the maximum range of the derivative order slider (MaxDerivativeOrder in line 15). You can also change the smoothing function by replacing "fastsbmooth" in InteractiveDerivativeRedraw with any other smoothing function. InteractiveDerivativeTest is a simple test of InteractiveDerivative; it generates a synthetic signal assigned to "signal", then calls InteractiveDerivative.|
|Demonstration of the application of differentiation to the
detection of peaks superimposed on a strong, variable
background. Requires Matlab 6.5. Generates a signal peak,
adds random noise and a variable background, then
differentiates and smooths it, and measures the signal range
and signal-to-noise ratio (SNR). Interactive sliders allow
you to control the following variables:
Amp: The amplitude (peak height) of the signal peak.
The second video, 17-second, 1.1 MByte, (DerivativeBackground2.wmv ) demonstrates the measurement of a weak peak buried in a strong sloping background. The amplitude (Amp) of the peak is varied between 0 and 0.14, but the background is so strong that the peak, located at x = 500, is hardly visible. Then the 4th derivative (Order=4) is computed and the scale expansion (Scale) is increased, with a smooth width (Smooth) of 88. Finally, the amplitude (Amp) of the peak is varied again, but now the changes in the signal are now quite noticable and easily measured.
This page is part of "A Pragmatic Introduction to Signal Processing", created and 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 email@example.com.
Number of unique visits since May 17, 2008: