Code covered by the BSD License  

Highlights from
iSignal 2.0

5.0

5.0 | 1 rating Rate this file 86 Downloads (last 30 days) File Size: 146.45 KB File ID: #32075
image thumbnail

iSignal 2.0

by Tom O'Haver

 

05 Jul 2011 (Updated 31 May 2012)

Interactive smoothing, differentiation, peak sharpening and measurement of time-series signals.

| Watch this File

File Information
Description

function Y=isignal(Data,xcenter,xrange,sm,sw,em,dm,rm,s1,s2)
 Version 2.0, May, 2012.
 An interactive function that performs smoothing, differentiation, and peak sharpening of a time-series signal "Data", 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).

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.
 See http://terpconnect.umd.edu/~toh/spectrum/Smoothing.html

 The D key (or optional input argument "dm") determines the derivative
 order (O, 1, 2, 3, 4, or 5). See
 http://terpconnect.umd.edu/~toh/spectrum/Differentiation.html

 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 http://terpconnect.umd.edu/~toh/spectrum/InteractiveResEnhance.htm).

 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 linearily interpolated baseline betwen 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.

 The ; key sets selected region to zero (to trim away artifacts and spikes).

 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)

Acknowledgements

The author wishes to acknowledge the following in the creation of this submission:
Savitzky-Golay smooth/differentiation filters and filter application

MATLAB release MATLAB 7.8 (R2009a)
Other requirements none
Tags for This File  
Everyone's Tags
Tags I've Applied
Add New Tags Please login to tag files.
Comments and Ratings (3)
06 Sep 2011 mohammad

perfect Tom

14 May 2012 Tom O'Haver

Version 1.95, submitted May 15, 2012, has bug fixes in background correction and peak measurememnt modes.

01 Jun 2012 Tom O'Haver

In version 2.0, the C key condenses oversampled signals by the specified factor N, replacing each group of N points with their average. The I key replaces the signal with a linearily interploated version containing a specified number of data points.

Please login to add a comment or rating.
Updates
11 Jul 2011

Version 1.2 adds several new functions.

19 Jul 2011

Version 1.4 adds area to signal info (Q); green center cursor, bug fixes.

01 Aug 2011

Version 1.6 can accept single vector inputs as well as matrix and x,y and adds semilog plot mode for overall signal (press H key).

23 Aug 2011

Corrected error in description

26 Sep 2011

Version 1.7 adds a quadratic background subtraction mode, other small additions and bug fixes.

14 Oct 2011

Added Savitzky-Golay smooth (thanks to Diederick)

14 Oct 2011

Bug fix

15 Nov 2011

Version 1.9: Derivatives computed with respect to x, corrected for non-uniform x axis intervals. Minor bug fixes and display improvements.

14 May 2012

Version 1.95: Bug fixes in backgrouond correction and peak measurememnt modes.

31 May 2012

Version 2.0: adds C key (condense signal), I key (interpolate signal); O key now saves processed signal to disc as a matrix in a .mat file.

Tag Activity for this File
Tag Applied By Date/Time
signal processing Tom O'Haver 05 Jul 2011 11:30:53
data import Tom O'Haver 05 Jul 2011 11:30:53
chemistry Tom O'Haver 05 Jul 2011 11:30:53
data exploration Tom O'Haver 05 Jul 2011 11:30:53
medical Tom O'Haver 05 Jul 2011 11:30:53
pharmaceutical Tom O'Haver 05 Jul 2011 11:30:53
physics Tom O'Haver 05 Jul 2011 11:30:53

Contact us at files@mathworks.com