image thumbnail


version (254 KB) by Tom O'Haver
Interactive smoothing, differentiation, power spectra, and measurement of time-series signals.


Updated 25 Dec 2017

View License

function function [pY,SpectrumOut]=isignal(DataMatrix,xcenter,xrange,sm,sw,em,dm,rm,s1,s2,sr,mw)
Version 6, December 2017. Adds segmented smooth (Press Shift-Q to set smooth width vector for segmented smooth); adds Shift-B to display before and after signals in figure window 2.
An interactive function that performs smoothing, differentiation, peak sharpening, and power spectrum analysis of a time-series signal, which may be a 2-column matrix with the independent variable (x-values) in the first column and dependent variable (y values) in the second column, or separate x and y vectors, or a single y-vector. Returns the processed independent axis (Y) vector as the output argument. The lower half of the figure window shows a plot of the entire signal, and the upper half shows a selected portion controlled by the pan and zoom keystrokes or by optional input arguments 'xcenter' and 'xrange', respectively. Other keystrokes also allow you to control the smooth type, width, and ends treatment, the derivative order (0th through 5th), and peak sharpening. (Alternatively, the initial values of these parameters can be passed to the function via the optional input arguments sm, sw, em, dm, rm, s1, s2, sr, and mw).
The S key (or optional argument "sm") determines the smooth mode:
If sm=0, the signal is not smoothed.
If sm=1, rectangular (sliding-average or boxcar)
If sm=2, triangular (2 passes of sliding-average)
If sm=3, pseudo-Gaussian (3 passes of sliding-average)
If sm=4, Savitzky-Golay smooth
The A and Z keys (or optional argument sw) control the smooth width.
The X key (or argument "em") controls how the "ends" of the signal (the first w/2 points and the last w/2 points) are handled.
If ends=0, the ends are zero.
If ends=1, the ends are smoothed with progressively smaller smooths the closer to the end.
The D key (or optional input argument "dm") determines the derivative
order (O, 1, 2, 3, 4, or 5). See
The E key (or optional argument "rm") turns off and on peak
sharpening (resolution enhancement). The sharpening strength is
controled by the F and V keys (optional argument "s1") and B and G
keys (optional argument "s2"). The optimum values depend on the peak shape and width; For details, see
The Backspace key starts background correction mode. The cursor changes to crosshairs; click it at multiple points along the presumed background. When the last point is clicked, the linearly interpolated baseline between those points is subtracted from the signal. To restore the original background (i.e. to correct an error or to try again), press the '\' key (just below the backspace key).
The P key toggles off and on the peak measure mode, which measures and displays the peak position, height, width, and area of the one peak at a time if it is centered and zoomed in; a red "cap" on the peak indicates that portion of the signal that is taken for the measurement. Press the 'R' key to print out the peak measures in the command window. Press the T key to activate the "autozero" mode, which subtracts a quadratic background from the signal segment in the upper window.
The L key toggles off and on the Overlay mode, which overlays the selected portion in the upper plot with the original signal as a dotted line, for comparison.
Press K to see all keyboard commands.
EXAMPLE 1: Data in two columns of a matrix.
>> load data.mat
>> isignal(DataMatrix);

EXAMPLE 2: Data in separate x and y vectors
>> isignal(x,y); or
>> isignal(y)
EXAMPLE 3: As above, but specifies initial values of pan (xcenter) and
zoom (xrange) in the last two input arguments.
>> isignal(DataMatrix,180,40); or
>> isignal(x,y,180,40);
EXAMPLE 4: As above, but additionally specifies initial values of
SmoothMode, SmoothWidth, ends, and DerivativeMode.
>> isignal(DataMatrix,180,40,2,9,0,1);

EXAMPLE 5: As above, but additionally specifies initial values of the
peak sharpening parameters Sharpen, Sharp1, and Sharp2.
>> isignal(DataMatrix,180,40,2,9,0,0,1,51,6000);
EXAMPLE 6: >> x=[0:.005:2];y=humps(x);Data=[x;y];
4th derivative of the peak at x=0.9:
>> isignal(Data,0.9,0.5,1,3,1,4);
Peak sharpening applied to the peak at x=0.3:
>> isignal(Data,0.3,0.5,1,3,1,0,1,220,5400);
(Press 'E' key to toggle sharpening ON/OFF)

Cite As

Tom O'Haver (2022). isignal(datamatrix,xcenter,xrange,sm,sw,em,dm,rm,s1,s2,sr,mw,spm) (, MATLAB Central File Exchange. Retrieved .

MATLAB Release Compatibility
Created with R2017b
Compatible with any release
Platform Compatibility
Windows macOS Linux

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!