O SlideShare utiliza cookies para otimizar a funcionalidade e o desempenho do site, assim como para apresentar publicidade mais relevante aos nossos usuários. Se você continuar a navegar o site, você aceita o uso de cookies. Leia nosso Contrato do Usuário e nossa Política de Privacidade.
O SlideShare utiliza cookies para otimizar a funcionalidade e o desempenho do site, assim como para apresentar publicidade mais relevante aos nossos usuários. Se você continuar a utilizar o site, você aceita o uso de cookies. Leia nossa Política de Privacidade e nosso Contrato do Usuário para obter mais detalhes.
Development of MATLAB Software to Control Data Acquisition from a
Multichannel Systems Multi-Electrode Array
Erik Messier, Behnaz Ghoraani∗, Ph.D.
Abstract— A Multichannel Systems (MCS) microelectrode ar-
ray data acquisition (DAQ) unit is used to collect multichannel
electrograms (EGM) from a Langendorff perfused rabbit heart
system to study sudden cardiac death (SCD). MCS provides
software through which data being processed by the DAQ unit
can be displayed and saved, but this software’s combined utility
with MATLAB is not very effective. MCSs software stores
recorded EGM data in a MathCad (MCD) format, which is then
converted to a text ﬁle format. These text ﬁles are very large,
and it is therefore very time consuming to import the EGM data
into MATLAB for real-time analysis. Therefore, customized
MATLAB software was developed to control the acquisition of
data from the MCS DAQ unit, and provide speciﬁc laboratory
accommodations for this study of SCD. The developed DAQ
unit control software will be able to accurately: provide real
time display of EGM signals; record and save EGM signals in
MATLAB in a desired format; and produce real time analysis
of the EGM signals; all through an intuitive GUI.
Index Terms— Data Acquisition, Perfused Rabbit Heart,
Multichannel EGM, MATLAB, Sudden Cardiac Death, MAT-
To study sudden cardiac death (SCD) using a Lagendorff
perfused rabbit heart system, hardware and software needed
to be developed. This paper discusses the development of
the software required for this study. To acquire electro-
gram (EGM) data from the perfused heart a Multichannel
Systems (MCS) 32-channel microelectrode array data ac-
quisition (DAQ) unit is utilized in conjunction with other
developed hardware. MCS provides software through which
data acquired by the MCS DAQ unit can be displayed
and saved, but this software stores data in a MathCad
(MCD) format, which is very time consuming to import into
MATLAB for further analysis. In order to provide a more
convenient way of storing and accessing the acquired data,
and preforming real-time analysis on the data, MATLAB
software was developed to control the acquisition of data
from the MCS DAQ unit. The development of the MATLAB
DAQ software was accomplished through a collaboration
between functions offered by MCS, in a dynamic link library
(DLL), and orignally produced functions and algorithms.
The originally produced functions and algorithms provide: 1)
formatting of the recorded data, 2) storage of the formattted
data, 3) real-time display and analysis of the data, 4) an
intuitive graphical user interface (GUI) through which the
entire developed software can be packaged.
Rochester Institute of Technology, Biomedical Engineering Department.
∗Corresponding Author: Rochester, 160 Lomb Memorial Drive Rochester,
NY 14623-5604. Email: firstname.lastname@example.org
In this section, user interface, recording and handling of
data, and real-time data display and analysis are discussed.
A. Structure of developed GUI
Fig. 1. The developed GUI has the ability to adapt the handling of data
depending on the selected CHANNELS and MODE as needed by the user.
Fig. 1 shows the GUI for the developed software. First,
the user selects the GUI parameters, MODE and CHANNELS
whose data will have a real time display. Then, Record
is selected, and all GUI objects and handles are ﬁnalized.
The software then initiates operation of the MODE that
has been selected, Manual, Automated, or Viewer mode.
MCS functions: create necessary DAQ unit objects; check
the status of the MCS DAQ unit, whether there is a MCS
DAQ unit attached to the computer or not; and initialize
FIFO queues. The MCS functions then begin acquisition
from the DAQ unit into each channels respective queue. In a
continuous loop: a deﬁned amount of data is read from each
queue, stored in a Buffer, and is formatted and processed;
data from channels that were selected to have a display is
then plotted; and heart rate and time elapsed are calculated
and displayed on the GUI window. This loop continues until
the user has stopped recording, un-toggled the Record button.
Once the loop has been terminated, the signal data and other
peripheral data, which will be identiﬁed later, is stored as an
object and saved to a user input ﬁlename and directory.
B. Data Recording and Handling
Fig. 2 is a high level representation of EGM data ﬂow
acquired from a perfused rabbit heart through the MCS
DAQ unit. The sections, marked with numbers on Fig. 2,
Fig. 2. High level representation of data acquisition control software operation.
indicate the main operations, which will be described in
the following. Steps 2-4 only show one iteration of data
acquisition for one channel, the nth channel. In order to
proceed to step 5, steps 1-4 must be completed for all
recording channels in the MCS DAQ unit. Multiple iterations
of steps 2-6 must be preformed to provide real-time data
for display and analysis, because this software creates a
continuous signal by appending shorter, subsequent, signals
together which are referred to as Buffers. Each subsequent
Buffer is a set of data that corresponds to the signal data
recorded from the MCS DAQ unit for the resulting amount
of time since the last Buffer was produced.
B.1) Initialization and Formatting of FIFO Queues: MCS
functions are used to create and format a FIFO queue for
each channel, and to start acquiring data from the DAQ unit
and placing each channels acquired data into its respective
queue. FIFO queues are useful for real time display and
analysis, because data is stored chronologically; the ﬁrst
data to enter the FIFO queue is the ﬁrst data to exit. For
this software’s purpose, the queues were preallocated with
zeroes to a size of 500,000 elements to prevent data from
overﬂowing from the DAQ unit causing a loss of excess
data. The sampling rate from the MCS DAQ unit into the
queues was set to 2,000 Hz; this rate was chosen, because
it is not too high such that the software’s data handling
would be slowed down by the large sets of data being
processed, but is also not too low such that features of the
recorded data are being missed, refer to Nyquist Frequency.
For more information about the functions used to preform
this operation, refer to MCS DLL .
B.2) Reading From FIFO Queues: A speciﬁc amount of
signal data, 2,000 elements, is read from each channels
FIFO queue, in the form of unsigned 16 bit integers (i.e.,
uint16), and is stored in a Buffer for that channel. This
is operation is performed in a serial manner. In a loop,
all channels are read sequentially using the MCS function
ChannelBlock ReadFramesUI16 . A simple algorithm is
used to make the loop wait until enough data is present in
the FIFO queue that is being read from before the Buffer is
parsed from it. For detailed information refer to ”Reading
Data from FIFO Queues” Algorithm below.
Algorithm 1: Reading Data from FIFO Queues
Given: ChannelBlock ReadFrames: MCS function that returns
how much data is in the FIFO queue.
Input: Channel: the channel that is being read from.
Frequency: rate at which data was sampled from the MCS DAQ unit.
Ready = 0;
while Ready = 0 do
DataAmount = ChannelBlock ReadFrames(Channel);
if DataAmount is greater than or equal to Frequency then
Ready = 1;
Output: Proceed to read data from channel’s FIFO queue
B.3) Reformatting Buffer: The Buffer produced from pre-
vious step is reformatted from uint16 to double (i.e., signed
64 bit integers) format, and the data is gain compensated, so
that it is scaled at the level of micro volts using Eq. (1).
double (Buffer) − 32768
The value of 32,768 is subtracted from the Buffer data to
correct the data’s zero. Since the data is delivered from the
queue in uint16 form, the data ranges between the values 0
and 65,535. To correct the zero of the data, 32,768 must be
subtracted so that the new range of the data is from negative
32,768 to positive 32,768. From Eq. (1), 1.5720 is divided
from the data to compensate for the gain of the system, this
will be further elaborated upon in the experiment discussion
portion of the paper.
B.4) Data Storage: Proceeding B.3, depending on the
selected MODE the data Buffer is either stored or is not
stored. There are three MODEs Manual, Viewer, and Auto-
mated (Auto). Manual MODE is used to continuously record
data. Viewer MODE is used only to visualize the data,
and not record it. Auto MODE utilizes both Manual and
Viewer MODEs, Auto-Record and Auto-View respectively, to
continuously record multiple trials of data.
Manual MODE stores data in a one row array, because
only one trial is preformed. Auto-Record stores data in a
multiple row array, each row corresponds to the trial number
(i.e. the ﬁrst row is the trials recorded data and the ith row
is the ith trial). In Fig. 2, For Manual MODE, 6 iterations
of data acquisition have occurred before the latest signal
Buffer was appended. In Auto-Record, i trials have been
recorded and 6 iterations on the most recent trial had been
recorded until the most recent signal Buffer was appended
to the ith row of the stored signal. This stored data array, at
the termination of the function, for both Auto and Manual
MODEs, will be saved in an object format which will also
contain: timestamps (ts) for the beginning of each trial, the
sampling rate (F) of the recordings, the calculated heart rates
(HR) for the recordings, and the time interval (Tint) for each
B.5) Data Display and Analysis: Once steps B.1-B.4 have
been completed for all the channels, then real time display
and analysis of the EGM signals is performed as will be
explained in the following.
C. Real-Time Display and Analysis of Data
C.1) Real-Time Display: The most recent signal buffer pro-
duced, the signal buffer for that iteration of data acquisition,
is used to plot the signal received for each channel that is
selected to be plotted from Channels. Each selected channel
is sub plotted on the same MATLAB ﬁgure; to optimize
the area of plots on the ﬁgure for a variable number of
plots, conditions were made such that subplots are added
to a column until four subplots are in that column. Once
there are four subplots in a column any additional subplots
are added to the next column.
C.2) Real-Time Analysis: The heart rate of the elec-
trocardiogram (ECG) signals, derived from EGM, is then
calculated with a commonly practiced method; refer to Heart
Rate Calculation algorithm.
Kurtosis is the measure of the ”peakedness” of a probabil-
ity distribution . Kurtosis is greater when there are more
infrequent, extreme amplitude, deviations from the mean of
a set of data; and vice versa . Therefore kurtosis is used
to differentiate between channels experiencing a lot of noise,
and channels that arent experiencing a lot of noise. Noise has
more frequent deviations from the mean of a set of signal
data, therefore its distribution is more Gaussian . An ECG
signal has more infrequent deviations from the mean of a set
of signal data, therefore its distribution is Super-Gaussian .
Only data from one channel is used to calculate heart rate,
therefore the channel whose data has the greatest kurtosis is
Algorithm 2: Heart Rate Calculation
Input: ChannelRate: Buffer of channel that was calculated to
have the maximum kurtosis of all channels.
Frequency: rate at which data was sampled from the MCS DAQ unit.
1) Calculate Daubechie’s wavelet transform of ChannelRate using
MATLAB function cwt;
2) Square calculated wavelet transform;
3) Find maximum peak of squared transform;
4) Find all peaks, and if a peak is within a 50 percent thrshold of
max then add 1 to number of peaks;
5) Divide length of ChannelRate by frequency to ﬁnd the time
duration of the buffer;
6) Divide number of peaks by time duration;
Output: Calculated heart rate
Wavelet transforms, of the signal being used to calculate
heart rate, are applied to reduce noise of the signal and to
furthermore exaggerate the R-peaks of the ECG from the
rest of the signal , . The following continuous wavelet
transform (CWT) equation, Eq. (2 )was used if the form of
the MATLAB native function , .
CWT (a, τ) =
s (t) Ψ
t − τ
In Eq. (2): a is the scaling factor used to strech and compress
the mother wavelet (ψ), τ is the translation factor, which
translates the mother wavelet along the axis of the signal,
and s(t) is the signal . The mother wavelet used to
accomplish this wavelet transform was a Daubechies (db10)
wavelet , . This wavelet was chosen because of its
relatable morphology to the ECG waveform. The scaling
factor imposed in this wavelet transform was 3, which
allowed for QRS extraction from the ECG.
Once the signals have been plotted, HR and the time
elapsed for the recording has been calculated and displayed
on the GUI, the function returns to step 2 on Fig. 2, if Record
on the GUI has not been turned off. Throughout the entire
process previously described data was continuously being
read from the MCS DAQ and added to the FIFO queues. In
returning to step 2, the new data that has been added to the
FIFO queues must simply be read, and the entire process
described is performed again. If Record is turned off the
functions stops at the termination of its current iteration of
the process described, and saves the data to the user input
ﬁlename and directory.
III. EXPERIMENTS AND RESULTS
Three experiments were performed to test the reliability
of the data being acquired, and the real-time analysis being
preformed through the developed DAQ software: a Delay
Test, an MCS software comparison test; and a test of the
Delay Test: To investigate delay in signals recorded between
different channels a cross correlation (xcorr) analysis was
preformed. The results of this xcorr analysis are shown in
Fig. 3. The lag positions were calculated using the native
MATLAB xcorr function. Lag refers to the amount of
displacement of one signal along the time domain required to
be most correlated, synchronized, to another signal. In Fig.
3 an MCS Me/W-SG signal generator was used to produce a
12.5 Hz sinusoid. All of the calculated lag positions were 0,
which indicates that all of the signals are lined up on the time
domain. 15 trials were preformed on the 12.5 Hz sinusoid,
and other generated signals (i.e., ECG, Hippocampal Slice,
and other sinusoids), and all trials had the same results.
Fig. 3. Delay Test: Test preformed on 12.5 Hz sinusoid. channel numbers
are in orange, and calculated lag positions of max correlation between
signals are in blue. A signal was only generated on 8 of 32 channels, all of
the odd channel numbers from 15-29 including channels 15 and 29.
MCS Comparison: The MCS DAQ software, MC Rack,
was considered to be the precedent for the developed soft-
ware’s acquired data. In this experiment morphology, fre-
quency, and amplitude of generated signals acquired through
both MATLAB and MC Rack were compared. This experi-
ment consisted of 10 trials in which a 1 Hz, 2.0 mV ECG was
generated using an MCS Me/W-SG signal generator. The re-
sults of one trial are shown in Fig. 4. The signals recorded in
Fig. 4 relate to 3 seconds of data, over which both MC Rack
and MATLAB had recorded 3 waves resulting in an effective
calculated frequency for each signal of 1 Hz. The signals in
Fig. 4 have the same frequency and relatable morphology,
but the amplitudes of the signal recorded through MATLAB
are greater than MC Rack’s. This amplitude difference is
a result of a gain discrepancy between the two recording
medium. The amplitudes of the signal recorded through the
developed MATLAB software were calculated to be a factor
of 1.5720 ± 0.0457 greater than the amplitudes produced
by MC Rack. To account for gain discrepancy the signal
recorded through MATLAB is divided by 1.5720. After gain
compensation, both media produce the same signal, therefore
the signals recorded through MATLAB are reliable, since the
signals recorded through MC Rack are considered reliable.
Fig. 4. MCS Comparison: In BLUE is a generated ECG acquired through
MATLAB. In RED is the same generated ECG acquired through MC Rack.
Signals are out of phase, because they were recorded separately.
HR Test: As mentioned earlier, a commonly practiced
method is used to calculate HR. However, to test the accuracy
of this calculation, the following experiment was preformed.
ECG data was acquired from a Langendorff perfused rat
heart in which all electrodes were placed relatively in the
same location, and data was acquired using MC Rack. Chan-
nel 9 was calculated to have the signal with the max kurtosis
and channel 25 had the least kurtosis. Fig. 5 shows the
recorded signals from the max and min kurtosis channels
above and below respectively. Fig. 5 illustrates the impor-
tance of using kurtosis; channel 10’s signal is noticeably
less noisy, which makes it easier to extract ECG features for
a HR calculation. Via manual calculation for channel 10’s
signal, there are 25 waves over 5 seconds therefore the HR
is 300 beats per minute. Using the developed HR calculation
algorithm the output was calculated to be 300 beats per
minute, as shown in Fig. 6. Therefore the HR calculation
algorithm is accurate.
Fig. 5. Above, in RED, is the rat heart ECG signal recorded on channel
9. Below, in GREEN, is the rat heart ECG signal recorded on channel 25.
Fig. 6. HR output of the HR calculation algorithm created in MATLAB
The developed software is able to accurately: provide real
time display of ECG signals; record and save ECG signals in
MATLAB in a desired format; and produce real time analysis
of the ECG signals; and all through an intuitive GUI. The
methodology and process used to achieve these capabilities
has been discussed and explained. Important functions and
algorithms used within the software have been summarized
and provided. The reliability of the signals recorded and
real-time analysis preformed through the software has been
discussed: there is no delay in recorded signals between dif-
ferent channels, the signals recorded through the developed
software are equivalent to signals recorded through MCS’s
DAQ software, and the HR calculation is accurate. This
software provides a more convenient means through which
to analyze signals from the MCS DAQ unit in MATLAB,
and is an intuitive and useful tool in the laboratory for the
real-time analysis, display, and recording of ECG signals.
 M. Systems, “Mcsusbnet.dll for mcs usb devices,”
 L. Sharma, S. Dandapat, and A. Mahanta, “Kurtosis based multichannel
ecg signal denoising and diagnostic distortion measures,” in TENCON
2009-2009 IEEE Region 10 Conference. IEEE, 2009, pp. 1–5.
 G. Cornelia and R. Romulus, “Ecg signals processing using wavelets,”
in IEEE, proceedings of the ﬁfth laserd International conference May,
 C. Saritha, V. Sukanya, and Y. N. Murthy, “Ecg signal analysis using
wavelet transforms,” Bulg. J. Phys, vol. 35, no. 1, pp. 68–77, 2008.