The WFDB Toolbox for MATLAB (SWIG version)

The new PhysioNet website is available at: We welcome your feedback.

Quick Start

This (SWIG) version of the WFDB Toolbox for MATLAB was last updated in 2009, and it will not be updated further. If you have MATLAB 7.11 (R2010b) or later on 64-bit GNU/Linux, Mac OS X, or MS-Windows, please use the currently supported version of the toolbox, available here.

If you have not already installed MATLAB 7 (R14, 2004) or later, do so before continuing!

What is the WFDB Toolbox for MATLAB?

The WFDB Toolbox for MATLAB is a collection of applications for reading, writing, manipulating, and plotting PhysioBank data, implemented as functions in MATLAB.

Since it's based on the WFDB Software Package, the WFDB Toolbox for MATLAB supports reading data directly from this web site (using HTTP). For example, in MATLAB, one can very simply download and plot a signal:

>> r = rdsamp('mitdb/100', 'maxt', ':10');
>> plot(r(:,1), r(:,2));

At the moment, the following functions are implemented:

rdann read annotation files for WFDB records
rdsamp read signal files of WFDB records
setwfdb set WFDB paths to default values
time2sec convert WFDB-format time intervals into seconds
wfdb_config return version and compilation information about the WFDB library
wfdbdesc return specifications for signals in WFDB records
wfdbwhich find the location of files belonging to WFDB records
wrann write annotations for WFDB records into annotation files
wrsamp write signal data into WFDB-compatible records

These functions provide MATLAB interfaces to some of the most useful stand-alone (command-line) WFDB applications, which are more fully documented here. Many, but not all, of the features of the stand-alone applications are accessible via these Toolbox functions; use MATLAB's help function to discover which features are available and how to use them.

The currently supported version of the WFDB Toolbox for MATLAB provides interfaces to a significantly larger set of WFDB applications.

Notes about implementation

The WFDB Toolbox for MATLAB makes use of the compiled WFDB library itself. This means that separate shared libraries are distributed for each supported platform (operating system and CPU).

In this version of the toolbox, MATLAB functions invoke Java translations of WFDB applications. These applications invoke JNI (Java Native Interface) wrappers for WFDB library functions. The JNI wrappers are generated automatically from the WFDB library header files using SWIG.

To use this version of the WFDB Toolbox, you must have installed MATLAB 7 (R14, 2004) or later, with a working Java Virtual Machine (JVM) that supports Java 1.4 or later. There are no plans to support earlier versions of MATLAB or Java. If necessary, it may be possible to upgrade the JVM used by an installation of MATLAB; see this MathWorks technical note on the subject.

The WFDB Toolbox has been developed and tested using Sun/Oracle Java (available freely from It is compatible with at least some versions of OpenJDK (IcedTea); if you have problems installing it using IcedTea, try using Sun's Java.

Supported Platforms

The following table shows which combinations of CPU architectures and operating systems have been tested for compatibility with this version of the toolkit.

AMD64, a.k.a. x86-64 i386, a.k.a. x86 (IA-32) PowerPC
Windows XP/Vista/7 YES YES N/A
Mac OS X 10.5 and 10.6 YES YES YES

Earlier versions of Mac OS X have not been tested but are expected to work. Depending on your MATLAB installation, the WFDB Toolbox installer may ask you to make classpath.txt and librarypath.txt writable; you can do this using the Terminal application (in Applications → Utilities), by typing these commands:

cd /Applications/MATLAB*/toolbox/local
chmod +w classpath.txt librarypath.txt

Under GNU/Linux, glibc 2.3.0 or higher, and a Linux 2.6.x or later kernel must be used.

MATLAB versions

Though only a few versions of MATLAB have been tested (including 7.0, 7.1, 7.3, 7.7, and 7.10), the WFDB Toolbox is expected to work for any version of MATLAB with a JVM version 1.4.0 or higher.


The WFDB Toolbox for MATLAB is available for direct installation via a Java Web Start application. This makes it very easy to download and install the package, as long as you have a Java Runtime Environment installed.

The steps that the Java Web Start installer will take are summarized briefly below.

First, you will see a security window asking for permission to allow the installer to run; this is necessary because the WFDB Toolbox must be installed to the file system.
Next, a panel with some introductory information will appear.
The installer will then search for installations of MATLAB. When it is done, you may search the file system for any other installations that it did not find.
Once the MATLAB installations have been selected, the WFDB Toolbox will be installed, and MATLAB will be updated to use them. The installer needs to update MATLAB's classpath.txt and librarypath.txt files, so you may be prompted for a superuser (root, administrator) password (or asked to make these files accessible.) Also, a brief test of the WFDB Toolbox will be run for each version of MATLAB selected.
Finally, a summary of the installation will be displayed. If the WFDB Toolbox could not be installed for some version of MATLAB, or if the brief test was not successful, such information will be displayed here.

In some cases, the installer will be unable to update the MATLAB path to include the directories for the WFDB Toolbox. If this is the case, a dialog box will be shown as the installer is exiting, to inform you about this and assist in updating the path manually (MATLAB's pathtool function can normally be used.) This may happen if there does not appear to be a MATLAB userpath variable set.

Before the installer exits, it will ask whether it should launch MATLAB with a short demonstration script that uses rdsamp and rdann to plot a signal and its annotations.

Other notes about the Java Web Start installer

As the installer runs, it will launch MATLAB several times; on Windows, you may see MATLAB windows pop up briefly, and then disappear. This is normal, and you may safely ignore these windows (do not attempt to close them.)

If one of these runs of MATLAB appears to be taking too long, please note that it is run with a time limit, and will be killed after a couple of minutes, if necessary.

The Java Runtime Environment (JRE) on your computer (not the JVM that MATLAB uses) should be version 1.5.0 or higher to run the WFDB Toolbox installer. If your system has an older version, you can still use the WFDB Toolbox installer, and Java Web Start should automatically download and set up a newer JRE version.

Other methods of installation

If the Java Web Start installer does not work properly, one of the methods below may be helpful.

For GNU/Linux and Mac OS X, a shell script is provided to install the WFDB Toolbox for MATLAB without using Java Web Start. The script's -h option prints details on how it can be used. The -p option is used to specify the path of a directory or URL holding the JAR files needed for installation (see below for notes on compilation); for example

./ -p

will download (as a set of JAR files) and install the latest version of the WFDB Toolbox. There is also a -g option which allows "global," i.e. system-wide installation, for all users.

Note that, unlike the Java Web Start installer, can only install for one version of MATLAB at a time.

If all else fails, the necessary JAR files may be downloaded and installed manually. Please see the file README.manual-inst for instructions on how to do this.

Compiling from source code

Of course, the latest source code may be downloaded and compiled. Please see the README file within the tarball for instructions on compilation.

Please note that the WFDB Toolbox for MATLAB has a number of dependencies that it includes as native shared libraries. These are pre-compiled and distributed both with the Java Web Start installer, and in downloadable JAR files (see above.) The source-code tarball does not include source for these dependencies; they must be downloaded and compiled separately, for the target operating system and architecture.

Notes on dependencies

The following external dependencies are used by the WFDB Toolbox for MATLAB. The version numbers listed are those of the shared libraries distributed with this version of the WFDB Toolbox.

cURL 7.19.3
GnuTLS 2.6.4
GnuPG 1.4.4
Libgpg-error 1.7
Libidn 1.12
WFDB 10.4.21
WFDB SWIG Wrappers 10.4.1

Note that GnuTLS, GnuPG, and Libgpg-error can be omitted if SSL support in cURL is turned off.

Compilation on GNU/Linux and Mac OS X is fairly straightfoward. On Windows, MinGW is required.