CHAPTER 1: INTRODUCTION INTO MATLAB COMPUTING

 

Lecture Notes 1.4: Reading and Writing Operations

 

Interactive operations by keyboard and mouse:

 

         input: takes the input data from an user, when he types a value and hits the return key

 

r = input('Enter radius of a sphere: ')

 

Enter radius of a sphere: 5

r =

5

 

z = input('Enter your name: ','s')

length(z)

z(1)

z(6)

 

Enter your name: Dmitry

z =

Dmitry

ans =

6

ans =

D

ans =

y

 

z1 = 1894 % this is number

z2= '1894' % this is a string

length(z2), z2(1), z2(4) % z2 is array of four characters

length(z1), z1(1) % z1 is scalar of one numerical value

z3 = str2num(z2) % conversion from string to number

(z1 == z3) % yes, z3 is now the same as z1, i.e. it is the number

z4 = num2str(z1) % conversion from number to string

(z2 == z4) % yes, z4 is now the same as z2, i.e. it is the string

% NB: when array variables are compared, each element is compared individually

% NB: for comparisons of array variables, they must be of the same size!

 

z1 = 1894

z2 = 1894

ans = 4

ans = 1

ans = 4

ans = 1

ans = 1894

z3 = 1894

ans = 1

z4 = 1894

ans = 1 1 1 1

 

         disp: displays numbers, vectors, matrices, and strings

disp(1234) % 1234 is a number

disp([1, 2, 3, 4]) % [1,2,3,4] is a vector

disp([1, 2; 3, 4]) % [1,2;3,4] is a matrix

disp('MESSAGE: 1234 is a string') % displays a string

 

1234

1 2 3 4

1 2

3 4

MESSAGE: 1234 is a string

 

         sprintf: creates a string output from any textual and numerical input

str1 = sprintf('The value of pi equals to %6.3f',pi)

str2 = sprintf('The integer part of e = exp(1) equal to %6.0f',exp(1))

% NB: the total width of the printed number is 6 (empty characters are added)

 

str1 =

The value of pi equals to 3.142

str2 =

The integer part of e = exp(1) equal to 3

 

         fprintf: outputs a formatted message and numbers to the user's terminal or to a file

fprintf('The value of pi equals to %6.3f\n',pi);

fprintf('The integer part of e = exp(1) equal to %6.0f\n',exp(1));

 

The value of pi equals to 3.142

The integer part of e = exp(1) equal to 3

 

         formats (the same as in C)

x = 123456789.987654321;

x1 = sprintf('%5.2f',x) % x1 displays 2 digits of the fractional part

% NB: the total width of the printed value exceeds 5,

% since the integer part of x has more characters than the format

x2 = sprintf('%5.2e',x) % x2 displays 2 digits after the period

x3 = sprintf('%5.2g',x) % x3 takes the floating point format as best

x4 = sprintf('%5.0f',x) % x4 displays rounded integer number

 

x1 =

123456789.99

x2 =

1.23e+008

x3 =

1.2e+008

x4 =

123456790

 

 

         Special characters:

o        '\n': new-line character

o        '\t': tab character

o        '\r': carriage return character

o        '\\': backslash character

o        '%%': percent character

 

fprintf('here is an example\n of a ver\ty fu\t\tnny t\t\t\text!');

 

here is an example

of a ver y fu nny t ext!

 

x = 1; y = 12; z = 123; w = 1234;

fprintf('x = %4d,\ty = %4d\nz = %4d,\tw = %4d\n',x,y,z,w);

% NB: useful formatting of data output

 

x = 1, y = 12

z = 123, w = 1234

 

Reading from and writing to a data file:

         fileID = fopen('filename','w'): open the file "filename" for writing operations

         fileID: an integer, called a file identifier (unique in the given working space)

         permissions:

o        'r' - read

o        'w' - write (create if necessary)

o        'a' - append (create if necessary)

o        'r+' - read and write (do not create)

o        'w+' - truncate or create for read and write

o        'a+' - read and append (create if necessary)

         fclose('fileID'): close the file with the file identifier "fileID" after all operations

         fprintf(fileID,'textname'): write the text "textname" into the file with the file identifier "fileID"

         fwrite(fileID,variablename): write the variable "variablename" into the file

         fscanf, fread: read MATLAB instructions for reading operations

 

Saving and loading the workspace:

 

         save: saving MATLAB current working space into double precision binary

 

         load: retrieving all saved variables from the file into MATLAB current working space

 

Note: If multiple variables in different data forms are to be loaded, they have to be prepared in separate ASCII data files! There is no such trouble in binary format: all stored variables are retrived separately and stored into different variables that keep the names of saved variables!

 

x = [ 1, 2, 3, 4 ]; y = [ -1 ; -2 ];

save data1 x y

clear all;

load data1;

x

y

 

x =

1 2 3 4

y =

-1

-2