index previous next

Interactive Smoothing using iSignal

Signal is an interactive Matlab function that performs smoothing for time-series signals using the fastsmooth algorithm, with keystrokes that allow you to adjust the smoothing parameters continuously while observing the effect on your signal dynamically. Other functions include differentiation, peak sharpening, and least-squares peak measurement. View the code here or dowload the ZIP file with sample data for testing.  Note: you can right-click on any of the m-file links on this site and select Save Link As... to download them to your computer for use within Matlab.

To use it, just place isignal.m in the Matlab path and type

             >> isignal(DataMatrix); or
>> isignal(x,y); or
>> isignal(y);

Use the cursor arrow keys to pan and zoom. The S key (or input argument "SmoothMode") cycles through four smoothing modes:
    If SmoothMode=0, the signal is not smoothed.
    If SmoothMode=1, rectangular (sliding-average or boxcar)
    If SmoothMode=2, triangular (2 passes of sliding-average)
    If SmoothMode=3, pseudo-Gaussian (3 passes of sliding-average)
    If SmoothMode=4, Savitzky-Golay smooth

The A and Z keys (or optional input argument SmoothWidth) control the SmoothWidth, w. Example shown in the figure on the right.

New in Version 6: To specify a segmented smooth, press Shift-Q. You can specify the smooth width vector in two ways: at the prompt you can (a) enter the number of segments (then you'll be prompted to enter the smooth widths in the first and last segments, and the computer will calculate integer values of smooth widths that are evenly divided between the specified first and last values, or (b) type in the smooth width vector directly including the square brackets, e.g. [1 3 3 9]. In either case, subsequently adjusting the smooth width with the A and Z keys will vary all the segments by the same percentage factor. (To return to an ordinary single segment smooth, enter 1 as the number of segments). Picture on right.

The X key toggles "ends" between 0 and 1. This determins how the "ends" of the signal (the first w/2 points and the last w/2 points) are handled when smoothing:
    If ends=0, the ends are zero.
    If ends=1, the ends are smoothed with progressively smaller smooths the closer to the end.
Generally, ends=1 is best, except in some cases using the derivative mode when ends=0 result in better vertical centering of the signal.

Note: when smoothing peaks, you can easily measure the effect of smoothing on peak height and width by turning on peak measure mode (press P) and then press S to cycle through the smooth modes.

Effect of smoothing on the frequency spectrum
. You can also visualize the effect of smoothing on the frequency spectrum of the signal by pressing Shift-S, which displays the frequency spectrum
in the lower window (temporarily replacing the full-signal display). Use the pan and zoom keys to adjust the region of the signal to be viewed. Press Shift-A to cycle through four plot modes (linear, semilog X, semilog Y, or log-log) and press Shift-X to toggle between a frequency on the x axis and time on the x-axis.  All signal processing functions remain active in the frequency spectrum mode  (smooth, derivative, etc) so you can observe the effect of these functions on the frequency spectrum of the signal, as in the animated figure on the left.

Press K to see all the keyboard commands.

This page is part of "A Pragmatic Introduction to Signal Processing", a retirement project and international community service, 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 Updated January, 2018.
index previous next

Number of unique visits since May 17, 2008:

create hit