CDF Patch for Matlab for Version R2007a and later
If you get error messages reading a CDF file or are not happy with CDF file
reading time, we strongly encourage you to download the patch on this page.
The patch fixes a lot of problems (see below for details), and it's
significantly faster than the cdfread function supplied in all
Matlab releases (including Matlab R2007b). Our performance test against a CDF
file from the ulysses mission brought the reading time down to 8 seconds from
10 minutes. Please note: this patch applies only for Matlab version R2007a
and later.
The patch available on this page has been sent to the Matlab development
team for inclusion into a future Matlab release.
What's Included in the Patch
- The cdfread routine occasionally chokes on some CDF files and issues
an error message "Undefined function or method 'rdivide' for input arguments of type 'cell'.".
- The cdfinfo and cdfread routines do not understand the CDF_EPOCH16
data type and issue an error message.
- The cdfread routine doesn't properly handle an array of CDF_EPOCH values.
- The cdfread routine reads one record at a time instead of reading
all the records in one scoop/read. As a result, the variable data
reading time, if there are a lot of records to read, will take a long
time that may not be acceptable to many users.
- A couple of new information is included from the cdfinfo module.
Both the CDF library version and the patch version are added to the
returned structure from the call. Use "help cdfinfo" for information.
- Some new options were added in cdfread module.
Use "help cdfread" for
information. Modification was also made so data returned from a 1-D
variable can be displayed as M-by-N where M is the number of records
and N the number of elements, regardless of file's row/column-major.
- New options were added to cdfwrite module. Use "help cdfwrite"
for information. Also, modified the code so 3-D or more variables can be
created properly.
- A new module: cdfupdate is added.
Use "help cdfupdate" for information.
Download and Installation Instructions
Last patch creation date: July 15, 2009 with
CDF Version 3.3.0.
From CDF V3.3.0, you can enter
"cdfinfo()" within matlab to see
the library and patch versions.
Windows:
- Download the self-extracting file: matlab_cdf_patch for Windows.
- Double-click the downloaded file to extract the files included
in the patch.
- Invoke Matlab and issue the following command at the Matlab prompt:
addpath '<patch_install_dir>'
For example, if the patch is installed under C:\matlab_cdf_patch, the
command should be
addpath 'C:\matlab_cdf_patch'
- Use Matlab as usual (e.g. data=cdfread('test.cdf','combinerecords', true)).
Mac OS X:
- Download the disk image file: matlab_cdf_patch for Mac OS X.
- Move the Matlab_CDF_Patch directory in the downloaded file to the
directory you want the patch to be installed under.
- Invoke Matlab and issue the following command at the Matlab prompt:
addpath '<patch_install_dir>'
For example, if the patch is installed under /Users/davidh, the
command should be
addpath '/Users/davidh/Matlab_CDF_Patch'
- Use Matlab as usual (e.g. data=cdfread('test.cdf','combinerecords', true)).
Linux / Solaris:
- Download one of the following tar files:
- Go to the directory where you want the patch to be installed under.
- Extract the files in the patch using the following command:
tar xvf <downloaded tar file>
- Invoke Matlab and issue the following command at the Matlab prompt:
addpath '<patch_install_dir>'
For example, if the patch is installed under /home/davidh, the
command should be
addpath '/home/davidh/matlab_cdf_patch'
- Use Matlab as usual (e.g. data=cdfread('test.cdf','combinerecords', true)).
If you have any questions or encounter problems, please send an email to
cdfsupport@listserv.gsfc.nasa.gov
and we'll respond as soon as possible.