Matlab File & Directory Management
Learning Objectives
• Topics
•Define file input and
output terminology
• Brief overview then
•Compare high and low
level file operations
• Lots and lots of exercises!
•Explore spreadsheet I/O
•Explore text file I/O
AE6382 Design Computing
• CHAPTER 14 - Mastering
MATLAB
1
Fall 2006
File Input and Output
• Reading from a source
Writing to a destination
AE6382 Design Computing
2
Fall 2006
High Level File Input and Output
• The highest (most abstract) level of file I/O operations
works with the entire MATLAB workspace, or with
individual variables.
>>save demo1
>>help save
or
or
>>load demo1
>>help load
EXERCISE:
•Review the HELP descriptions for save and load
•Create several variables
•Save them to disk
•Clear memory
•Load one of the variables
•Discuss some uses of these statements …
AE6382 Design Computing
3
Fall 2006
Features of High Level I/O
• The programmer thinks about save and retrieving entire
sets of variables
• The programmer does not consider how the individual
bytes are stored on disk
• The programmer does not consider how the variables
are organized within the file
• There is not explicit “open” or “close” of the file stream,
one simply “grabs” entire sets of variables from a file (or
copies them to files).
AE6382 Design Computing
4
Fall 2006
Data Import and Export
• The next highest level of file I/O describing working with
entire files, but whose contents are not explicitly
MATLAB variables.
• For example, working with spreadsheets, images, audio
and video files, or raw ASCII text.
>> help fileformats
• MATLAB provides numerous functions to help in working
with these different formats.
• REFER to section 13.2 (pp. 206)
AE6382 Design Computing
5
Fall 2006
Working with Text Files
• It is common to encounter files that contain columns and
rows of numeric data
– numbers have different precisions and formats
– delimiters (spaces, tabs, ;) separate columns
Command:
dlmread - read data from a text file
Examples:
>> data = dlmread(‘demo.txt’,‘ ‘);
>> [a,b] = dmsread(‘demo1.dat’,‘;’);
>> help dlmread
AE6382 Design Computing
6
Fall 2006
Working with Spreadsheet Data
• Command:
•
xlsread - read data from an Excel spreadsheet
• Examples:
>> m = xlsread(‘demo.xls’);
>> [a,b] = xlsread(‘demo.xls’);
>> help xlsread
• Exercise:
• Download example spreadsheet (DEMO.XLS) from
web site
• Explore various forms of xlsread command
• How are data stored in MATLAB? What about
column and row names? What about the formulas?
• Discuss how this routine can be incorporated into
your home work assignment
AE6382 Design Computing
7
Fall 2006
Low Level File I/O
• At the lowest level, the programmer is responsible for
the moving the the bits and bytes.
• File streams are “opened” and “closed”
• Here is typical MATLAB code:
>> j = fopen(‘proj3data.txt’);
>> while (not(feof(j)))
line = fgetl(j);
disp(line);
>> end;
NOTE:
See help iofun for a
description of the
different I/O functions
>> fclose(j);
• What does this code do? Can you embed this code
within a function to display contents of an “m-file?”
AE6382 Design Computing
8
Fall 2006
Low Level File I/O (2)
• Doing low level file I/O can get very tricky so you will
have to read the documentation carefully if you use this
approach!
function listfile(filename)
% demo of low level file I/O
if ~ischar(filename)
error('LISTFILE: argument must be filename')
end
if isempty(filename)
error('LISTFILE: argument not defined')
end
fid=fopen(filename,'rt'); % open as text file for read only
if fid==-1
error('LISTFILE: file not found or can''t be opened')
end
while not(feof(fid))
line = fgetl(fid);
disp(line);
end;
fclose(fid);
AE6382 Design Computing
9
Fall 2006
Text File Vocabulary
• A file consists of many lines, each line is separated from the next by
an invisible “newline” character
– PC’s, Mac’s and Unix/Linux all use different newline chars
– PC’s use “carriage return & linefeed” or CR/LF
– Unix systems use LF and Mac’s use CR
• Each line (or record) can be subdivided into a series of “fields” or
“columns” separated by a “field delimiter.”
• Different programs use different delimiters (e.g., spaces, commas,
tabs, quotes, etc.)
• Numbers, etc. are actually stored in ASCII not binary, and must be
translated back and forth.
AE6382 Design Computing
10
Fall 2006
Text file vocabulary
• Here is a sample from our text file:
1.0000000e+001
5.0000000e+000 -2.3465600e+000
1.0000000e+001
5.2000000e+000 -2.3658827e+000
1.0000000e+001
5.4000000e+000 -2.3559947e+000
1.0000000e+001
5.6000000e+000 -2.3716188e+000
1.0000000e+001
5.8000000e+000 -2.3921178e+000
AE6382 Design Computing
11
Fall 2006
Encoding information on the computer
• ASCII
• American Standard Code for Information Interchange
• 1 character  1 byte
•
•
•
•
Unicode
the new standard
1 character  2-4 bytes
Allows representing every character in a language
(Chinese included!)
AE6382 Design Computing
12
Fall 2006
Exercise: working with text files
• Download text files ttimes.txt and atlanta.txt
from web site.
• Try loading the data using various commands
– load
– dlmread
– Import to a spreadsheet, then use xlsread into Matlab
• In atlanta.txt, each record represents a single line,
with the 3,4,5 and 6 columns represent X1,Y1, X2 and
Y2 points for that line.
• Write a program that plots each of these lines. What
does the picture represent?
AE6382 Design Computing
13
Fall 2006
Optional exercise: working with text files
• The file ttimes.txt contains six columns:
•
•
•
•
Row Id, Col Id, Point ID, X, Y, TT
Load the file,
View the first 10 rows - what do you notice?
Enter >>format short g then view the data again
• Write a script to create a “PLAID” from X, Y and TT. The
RowID and ColID can be used to position these data into
a 25x25 matrix.
• Create a contour plot using the plaid
• Modify your script to overlay the lines (from
atlanta.txt) onto the contour.
AE6382 Design Computing
14
Fall 2006
Summary
• Review questions
Action Items
• Describe basic concepts of
file I/O.
• Review the lecture
• Compare and contrast highversus low-level file I/O.
• Use this to complete
homework
• Identify important elements
of a text file
• Why use text files?
AE6382 Design Computing
15
Fall 2006
Important commands
•
•
•
•
•
>>
>>
>>
>>
>>
help
help
help
help
help
iofun
fileformats
xlsread
dlmread
sprintf
AE6382 Design Computing
16
Fall 2006