View Full Version : Summary: Rectification and Bin-Integration of biosignals withMatLab

Dominique Gauthier
01-21-2004, 04:38 AM
Dear BIOMCH-L subscribers:

A week ago, I posted a question about how to process the Bin-Integration of ENG signals in MatLab. Following is a summary of the answers I received in regards to ENG signals:

What is Bin-Integration?
This process is used to simplify ENG signals. The signal is integrated over successive time intervals (bins). A bin is typically 1 to 4 ms. This process allows to down-sample and smooth the signal.

Which function can be used in MatLab?
A trapezoidal integration can be used (trapz).


Dominique Gauthier

************************************************** ************************************************** **************
Poletto, Christopher (NIH/NINDS)

Bin integration is a process used to simplify the ENG data collected,
typically before the data is recorded to tape. In bin-integration, one
chooses a time bin interval (temporal resolution), typically 1 to 4 ms. The
rectified ENG signal is then integrated over each of the time bins,
effectively down-sampling and smoothing the ENG signal. The process is very
easy to do in MATLAB and I could help you with the code if you would like. A
lot will depend on how you have stored the data and what form you would like
it to be in for the software you will use to analyze the data. The
integration itself can be accomplished using the trapz or quad MATLAB

************************************************** ************************************************** **************
Ted Clancy

The classic method of EMG processing is to rectify the signal, then smooth. I suspect that the "bin-integration" is simply averaging the (rectified) signal over some bin width (in time). I suspect that doing so would give you an amplitude estimate once per bin (so, at a much slower rate than your sampling rate). For EMG, it is common to produce one amplitude estimate per sample. So, you are effectively rectifying the signal, then low-pass filtering. If your low-pass filter is simply the average of the last N points (a common method, although it is actually a poor low-pass filter), then you could implement the whole thing in MATLAB in one line as:

y = filter(ones(1,N), 1, abs(x));
where x is the input signal and y is the amplitude estimate. You effectively have a moving average of the last N points (after being rectified). Note that you have not actually done any integration. The term "integration" is often used incorrectly in EMG processing, when really a low-pass filter has been applied. Note that if you only wanted an estimate every Nth point, then you could decimate y with:

y = y(1:n:length(y));

Also, although the above method is common, it is not an optimum method by any means. If you pre-whiten the signal, you can dramatically improve the quality of the amplitude estimate. I've done a fair amount of whitening with EMG data, and have been anxious to try it on nerve signals. If you have some objective output for testing amplitude estimator performance with ENG (e.g., simultaneously recorded force), then it might be interesting to try.

For references, Prof. Sinkjaer and co-workers (Aalborg University, Denmark) have several ENG papers. Some explain their processing scheme. For EMG whitening, I have co-authored a recent review (it has a review of whitening, and references to a lot of the existing work) that can be found as: Edward A. Clancy, Evelyn L. Morin and Roberto Merletti, "Sampling, Noise-Reduction and Amplitude Estimation Issues in Surface Electromyography," Journal of Electromyography and Kinesiology, Vol. 12, No. 1, pp. 1-16, 2002.

To unsubscribe send SIGNOFF BIOMCH-L to LISTSERV@nic.surfnet.nl
For information and archives: http://isb.ri.ccf.org/biomch-l
Please consider posting your message to the Biomch-L Web-based
Discussion Forum: http://movement-analysis.com/biomch_l