Importing Data (Plotting in Two Dimensions) (MATLAB)

Whenever we are dealing with data in MATLAB, whether it is function generated, or measured, we are first faced with just how to bring that data into the MATLAB environment. Fortunately MATLAB provides a rich set of commands that support data input and output from many different standard formats. If you have a data file that was created using another application or program, the contents of that data file can be imported into the MATLAB workspace. Once you have imported the data, you can then manipulate or plot the data. However, before we consider data files from other applications, we should also understand how to import data saved during other MATLAB sessions. In many cases, you will be working with other MATLAB users and you will need to operate on their data.

MATLAB Data Formats

Modern MATLAB supports a broad range of standard data formats. The following tables list the data formats for which MATLAB provides built-in support and the associated import commands.

Data Formats



MAT – MATLAB workspace


Variables in file

CSV – Comma separated numbers


Double array

TXT – Formatted data in a text file


Double array

DAT – Formatted text


Double array

DLM – Delimited text


Double array

TAB – Tab separated text


Double array

Spreadsheet Formats



XLS – Excel worksheet


Double array and cell array

WK1 – Lotus 123 worksheet


Double array and cell array

Scientific Data Formats



CDF – Common Data Format


Cell array of CDF records

FITS – Flexible Image Transport System


Primary or extension table data

HDF – Hierarchical Data Format


HDF or HDF-EOS data set

Image Formats



TIFF – Tagged image format


Truecolor, grayscale or indexed image(s)

PNG – Portable network graphics


Truecolor, grayscale or indexed image

HDF – Hierarchial data format


Truecolor or indexed image(s)

BMP – Windows bitmap


Truecolor or indexed image

Audio Formats



AU – Next/Sun Sound


Sound data and sample rate

SND – Next/Sun Sound


Sound data and sample rate

WAV – Microsoft Wave Sound


Sound data and sample rate

Movie Formats



AVI – Movie


MATLAB movie

Importing High-Level Data

The most straightforward method of importing data is to use the load command. The load command can read either binary files containing matrices generated by earlier MATLAB sessions (usually by use of the save command), or text files containing numeric data. If the data file was created in an earlier MATLAB session, simply issuing the load command with the filename is all that is needed. The save command will save the specified data in MATLAB’s binary data format. The following example shows just how simple this can be.


The important points to remember in using save and load in this way is that MATLAB will by default attach the ".mat" extension to the data file and the file will be created or read from the current working directory.

As stated earlier, this use of the save and load commands uses the default MATLAB binary file format. Although many other applications are now being created that can read and write this format, save and load can be used to both write and read text data which can make importing and exporting data a simple matter. Either command could have been issued with the keyword -ASCII. If save was used with -ASCII, the data is automatically tab delimited. Otherwise, you should make sure that your data file is organized as a rectangular table of numbers, separated by blanks, with one row per line, and an equal number of elements in each row. For example, let’s say that you have an ASCII data file called datafile.dat which contains three columns of data. The first column contains the integers 1 through 10. The second column lists the square root of the first column’s numbers. Finally, the third column contains the square of the numbers in the first column.


The data can then be imported into the MATLAB workspace by typing:


You do not need to specify that the file is an ASCII format as the load command is smart enough to recognize that. MATLAB puts the data contained in the datafile.dat file into a matrix variable called datafile. This matrix will have 10 rows and 3 columns. New variables can be defined from the rows, columns, and elements of the datafile variable. To find out exactly how and what you can do with variables by means of their indices, take a look at the sections in the Getting Started with MATLAB manual.

Importing Low-Level Data

Often data files contain headers, that is, descriptive statements describing how, when, and under what circumstances the following data was collected or generated. Usually you will wish to bypass the header after you have extracted the information you need from it. Additionally, other complicating factors such as rows that have varying number of columns, or text interspersed with numerical data will inevitably be encountered. Even if your data is not in one of the standard formats, you can use the low-level file input/output (I/O) functions MATLAB provides. In such circumstances where the format of the file is known, but is not one of the standard formats, it will most likely be best to make use of the fread and fscanf commands. Both commands are used to read binary data from a file according to a specified format. Both are part of the low-level I/O commands available in MATLAB and require that certain parameters that describe the precision and location of the data in the file be specified. The general form of the fread command is:


Here, A is the matrix returned by the fread command that contains the data which was read. COUNT is an optional output argument that tells you how many elements were successfully read. As you can see, fread expects up to four input arguments. The first argument, FID, is a required value that corresponds to the file identification number of the file to be read. This value is obtained by using the fopen command. The second argument, SIZE, is optional and tells the fread command how much data is to be read. PRECISION is a string that specifies the format of the data. Typically this consists of a data specifier such as int or float followed by an integer giving the size in bits. In general MATLAB’s low-level I/O functions are based on the I/O functions of the ANSI C Library. If you are already familiar with C, then you will be familiar with these commands. The table, "MATLAB Low-Level I/O Commands" lists both the binary and ASCII low-level file I/O commands in MATLAB. The following steps are generally what is required to read and write data to data files:

1.    Open the file to be read or written to using fopen.

2.    Operate on the file:

a.    fread for reading binary data,

b.    fwrite for writing binary data,

c.    fgets or fgetl for reading text strings line by line,

d.    fscanf for reading formatted ASCII    data,

e.    fprintf for writing formatted ASCII    data.

3.    fclose to close the file.

Although the following table can serve as a handy reminder, please refer to the on-line help or to the MATLAB Function Reference to learn more about MATLAB’s low-level file I/O commands.

MATLAB Low-Level I/O Commands





Opens a file for reading or writing.



Used to close a file once

reading or writing is




Reads a line from a file but discards the newline character.



Reads a line from a file and keeps the newline character.



Reads binary data from a file.



Writes binary data to a file.



Writes formatted data to a file.



Reads formatted data from a file.


It is not our intention to present a comprehensive discussion on the different data importing functions available in MATLAB. You can read the MATLAB helps on any of these functions as you come across a need for them. The main points to be made here is that MATLAB supports a host of data formats and provides the low-level functions to let you build a special import function if you need it.

Next post:

Previous post: