Development Environment |
Reading Binary Data
The fread
function reads all or part of a binary file (as specified by a file identifier) and stores it in a matrix. In its simplest form, it reads an entire file and interprets each byte of input as the next element of the matrix. For example, the following code reads the data from a file named nickel.dat
into matrix A
.
To echo the data to the screen after reading it, use char
to display the contents of A
as characters, transposing the data so it is displayed horizontally.
The char
function causes MATLAB to interpret the contents of A
as characters instead of as numbers. Transposing A
displays it in its more natural horizontal format.
Controlling the Number of Values Read
fread
accepts an optional second argument that controls the number of values read (if unspecified, the default is the entire file). For example, this statement reads the first 100 data values of the file specified by fid
into the column vector A
.
Replacing the number 100
with the matrix dimensions [10 10]
reads the same 100 elements into a 10-by-10 array.
Controlling the Data Type of Each Value
An optional third argument to fread
controls the data type of the input. The data type argument controls both the number of bits read for each value and the interpretation of those bits as character, integer, or floating-point values. MATLAB supports a wide range of precisions, which you can specify with MATLAB specific strings or their C or Fortran equivalents.
Some common precisions include
char
'
and 'uchar
'
for signed and unsigned characters (usually 8 bits)
'short'
and 'long'
for short
and long integers (usually 16 and 32 bits, respectively)
'float'
and 'double'
for single- and double-precision floating-point values (usually 32 and 64 bits, respectively)
Note
The meaning of a given precision can vary across different hardware platforms. For example, a 'uchar' is not always 8 bits. fread also provides a number of more specific precisions, such as 'int8' and 'float32' . If in doubt, use precisions that are not platform dependent. See fread for a complete list of precisions.
|
For example, if fid
refers to an open file containing single-precision floating-point values, then the following command reads the next 10 floating-point values into a column vector A
.
Opening Files | Writing Binary Data |