Professional Documents
Culture Documents
Data Import-Export
Why is it important? Lab experiment results are: usually recorded in lab (even on paper) Put together and stored into a data file Analyzed using mathematical tools Text file (.txt) Microsoft Excel file (.xls) Binary file
What do we want to export? Save everything in the workspace for post analysis. Save a selected number of results from the analysis in a text file (formatted or not)
fprintf Function
Format effects only the display of variables not their values through program execution fpintf function writes formatted data in a user specified format to a file
fprintf(fid,format,val1,val2, .) fid :the file id to which data will be written (no fid for printing on CW)
%-12.5e
Marker (Required)
Modifier (Optional)
Precision (Optional)
Specifier
%c %d %e %E %f %g %s
Single character Decimal notation (signed) Exponential notation Exponential notation Fixed-point notation
Description
The more compact of %e and %f. Insignificant zeros do not print String of characters
%u
symbol
Description
New line
Horizontal tab backspace Print an ordinary backslash (\) Print an ordinary percent symbol (%)
\n
\t \b \\b %%
If a non decimal number is displayed with the %d specifier, the specifier will be ignored and the number will be displayed in exponential format fprintf(%6d\n,123.4) produces 1.234000e+002
Example: floating point (real) data is displayed using %e, %f and %g format specifiers
fprintf(%f\n,123.4) ----|----| 123.400000 (default is 6 chars after the decimal place) ----|----| 123.40 ----|----| 123.40 (6 chars wide field) ----|----| 1.23e+002 ----|----| 1.23E+002 ----|----| 123.4000 ----|----| 123.4
fprintf(%s\n, string)
fprintf(%8s\n, string) fprintf(%-8s\n, string)
----|----| string
----|----| string ----|----| String (left justified)
Examples:
x = 0:.1:1;
y = [x; exp(x)]; %fid = fopen('exp.txt', 'w+'); fprintf(fid, '%6.2f %12.8f\n', y); %fclose(fid)
fprintf( ...
'A unit circle has circumference %g radians.\n', 2*pi) A unit circle has circumference 6.283186 radians. B = [8.8 7.7; 8800 7700]
Importing data
Two common ways Direct input through the keyboard (using the input function) Good for individual input.
Use existing data stored in a file and import them into Matlab.
Importing data
Different types of data files Text based files = formatted data for user usage.
(.txt .dat )
Usually follows the American Standard Code for Information Interchange (ASCII)
(.bin .mat)
Importing data
test1.txt
Function load
Syntax:
load filename
0 1.0000 2.0000 3.0000 4.0000 5.0000 6.0000 7.0000 8.0000 9.0000 10.0000
0 0.3090 0.5878 0.8090 0.9511 1.0000 0.9511 0.8090 0.5878 0.3090 0.0000
Importing data
test2.txt
Function dlmread
7.2;8.5;6.2;6.6 5.4;9.2;8.1;7.2
test3.txt
Syntax:
A = dlmread('filename', 'delimiter');
7.2; 5.4;
>> A=dlmread('test2.txt',';')
A= 7.2000 5.4000 8.5000 9.2000 6.2000 6.6000 8.1000 7.2000
Importing data
Function textread
[A,B,C,...] = textread('filename','format',N)
[A,B,C,...] = textread('filename','format') reads data from the file filename into the variables A,B,C, and so on, using the specified format, until the entire file is read. textread is useful for reading text files with known mixed formats. Both fixed and free format files can be handled. The format needs to be specified with a specifier like fprintf %s for string, %f for fix point notation %d for integers [A,B,C,...] = textread('filename','format',N) reads data from the file 'filename' N times.
Importing data
test4.txt
Importing data
Function fscanf Syntax:
A = fscanf(fid, format)
Read at most n numbers, characters, or strings. Read to the end of the file. Read at most (m*n) numbers, characters, or strings. Fill a matrix of at most m rows in column order. n can be inf, but m cannot.
Importing data
Example 1: fid = fopen('exp.txt', 'r'); a = fscanf(fid, '%g %g', [2 inf]) a = a'; fclose(fid)
0 0.1 0.2 1 1.10517092 1.22140276
0.3
1.34985881
1.4918247 1.64872127 1.8221188 2.01375271 2.22554093 2.45960311 2.71828183
xdata.txt Example 2:
1 12 3 4 8 a = 1 12 3 4 8 nvals = 5
0.9 1
Importing data
Data Format Sample 1234 5 6 7 8 9 10
1; 2; 3; 4; 5 6; 7; 8; 9; 10 or 1, 2, 3, 4, 5 6, 7, 8, 9, 10
Ann Type1 12.34 45 Yes Joe Type2 45.67 67 No Grade1 Grade2 Grade3 91.5 89.2 77.3 88.0 67.8 91.0 67.3 78.1 92.5
Matlab function
load
for j=1:N name1=test00'; name2=num2str(j); name3=.txt; NAME=[name1 name2 name3]; F=load(NAME); A(:,1)= F(:,1); A(:,j+1)= F(:,2); end
1.0000 0.3090 test003.txt 0 0 2.0000 1.0000 0.5878 0.3090 0 0 3.0000 2.0000 0.8090 0.5878 1.0000 0.3090 4.0000 3.0000 0.9511 0.8090 2.0000 0.5878 5.0000 4.0000 1.0000 0.9511 3.0000 0.8090 6.0000 5.0000 0.9511 1.0000 4.0000 0.9511 7.0000 6.0000 0.8090 0.9511 5.0000 1.0000 8.0000 7.0000 0.5878 0.8090 6.0000 0.9511 9.0000 8.0000 0.3090 0.5878 7.0000 0.8090 10.00009.0000 0.0000 0.3090 8.0000 0.5878 10.0000 0.0000 9.0000 0.3090 10.0000 0.0000
Exporting data
Three Steps:
'w Open file, or create new file, for writing; discard existing contents, if any.
Exporting data
w+ a
a+
Delete the contents of an existing file (or create a new file) and open it for reading and writing Open an existing file (or create a new file) and open it for writing only, appending to the end of file.
Open an existing file (or create a new file) and open it for reading and writing, appending to the end of file.
Exporting data Functions fopen,fprintf and fclose 2 fprintf: Used the same way as display function, except that this time, the
formatting of the data is retained in the data file. Syntax: fprintf(fid,format,A,...) Formats the data in the real part of matrix A (and in any additional matrix arguments) under control of the specified format string, and writes it to the file associated with file identifier fid.
Syntax: num = xlsread(filename) num = xlsread(filename, -1) num = xlsread(filename, sheet, 'range )
num = xlsread(filename) returns numeric data in double array num from the first sheet in the Microsoft Excel spreadsheet file named filename. The filename argument is a string enclosed in single quotes. num = xlsread(filename, -1) opens the file filename in an Excel window, enabling you to interactively select the worksheet to be read and the range of data on that worksheet to import. num = xlsread(filename, sheet, 'range') reads data from a specific rectangular region (range) of the worksheet specified by sheet.
A = xlsread('testdata1.xls') A = 1 2 3 4 5 6 7 8 9 10
testdata1.xls 1 6 2 7 3 8 4 9 5 10
A = xlsread('testdata1.xls,-1) A = 1 2 3 4 5 6 7 8 9 10
testdata1.xls 1 6 2 7 3 8 4 9 5 10
A = xlsread('testdata1.xls,1,A4:B5) A = 4 5 9 10
testdata1.xls 1 6 2 7 3 8 4 9 5 10
Syntax:
xlswrite(filename, M) writes matrix M to the Excel file filename. The filename input is a string enclosed in single quotes. The input matrix M is an m-by-n numeric, character, or cell array, where m < 65536 and n < 256. The matrix data is written to the first worksheet in the file, starting at cell A1. xlswrite(filename, M, sheet, 'range') writes matrix M to a rectangular region specified by range in worksheet sheet of the file filename.
d = {'Time', 'Temp'; 12 98; 13 99; 14 97}; s = xlswrite('tempdata.xls', d, 'Temperatures', 'E1') tempdata.xls Time 12 13 14 Temp 98 99 97
Syntax:
M = csvread(filename) reads a comma-separated value formatted file, filename. The filename input is a string enclosed in single quotes. The result is returned in M. The file can only contain numeric values. M = csvread(filename, row, col) reads data from the comma-separated value formatted file starting at the specified row and column. The row and column arguments are zero based, so that row=0 and col=0 specify the first value in the file. M = csvread(filename, row, col, range) reads only the range specified. Specify range using the notation [R1 C1 R2 C2] where (R1,C1) is the upper left corner of the data to be read and (R2,C2) is the lower right corner. You can also specify the range using spreadsheet notation, as in range = 'A1..B7'.
csvlist.dat 02, 04, 06, 08, 10, 12 03, 06, 09, 12, 15, 18 05, 10, 15, 20, 25, 30 07, 14, 21, 28, 35, 42 11, 22, 33, 44, 55, 66
csvread('csvlist.dat') ans = 2 3 5 7 11 4 6 10 14 22 6 9 15 21 33 8 12 20 28 44 10 15 25 35 55 12 18 30 42 66
To read the matrix starting with zero-based row 2, column 0, and assign it to the variable m,
m = csvread('csvlist.dat', 2, 0) m = 5 7 11 10 14 22 15 21 33 20 28 44 25 35 55 30 42 66
To read the matrix bounded by zero-based (2,0) and (3,3) and assign it to m,
m = csvread('csvlist.dat', 2, 0, [2,0,3,3]) m = 5 7 10 14 15 21 20 28
Syntax:
csvwrite(filename,M) csvwrite(filename,M,row,col)
csvwrite(filename,M) writes matrix M into filename as comma-separated values. The filename input is a string enclosed in single quotes. csvwrite(filename,M,row,col) writes matrix M into filename starting at the specified row and column offset. The row and column arguments are zero based, so that row=0 and C=0 specify the first value in the file.
m = [3 6 9 12 15; 5 10 15 20 25; ... 7 14 21 28 35; 11 22 33 44 55]; csvwrite('csvlist.dat',m) type csvlist.dat 3,6,9,12,15 5,10,15,20,25 7,14,21,28,35 11,22,33,44,55
m = [3 6 9 12 15; 5 10 15 20 25; ... 7 14 21 28 35; 11 22 33 44 55]; csvwrite('csvlist.dat',m,0,2) type csvlist.dat ,,3,6,9,12,15 ,,5,10,15,20,25 ,,7,14,21,28,35 ,,11,22,33,44,55