CHAPTER 1: INTRODUCTION INTO MATLAB COMPUTING
Lecture Notes 1.1:
Computations of variable and arrays (vectors)
General Commands:
·
helpwin, helpdesk: opens the interactive help windows
·
help functionname: lists the description of "functionname" in the
Command Window
DATE Current date as date string.
S = DATE returns a
string containing the date in dd-mmm-yyyy format.
See also NOW, CLOCK, DATENUM.
·
dir, ls: lists all files in the directory
·
cd c:\ changes directory to "c:\"
·
mkdir dirname: creates a new subdirectory "dirname"
·
who, whos: lists all initialized variables in the current workspace
·
clock: returns the array for [year,month,day,hour,minute,second]
fix(clock) % sets the variable clock as the arrray of integers
1.0e+003 *
2.0020 0.0010
0.0040 0.0140 0.0440
0.0245
ans =
2002 1 4 14 44 24
·
diary on, diary off: records all activities on the Command Window into a
file named "diary", it is useful for recording your
session for assignments and labs
·
diary filename: record activities into file "filename", if the
file exists, the new listing is appended
Variables:
·
names
and types of variables do not have to be declared
·
every
object in MATLAB is a complex matrix or its derivative
·
scalar
variables are initialized as 1x1 matrices of integer, real or complex values
·
scalar
variables can be later extended into vectors and matrices
·
names
of variables should not contradict to MATLAB keywords, function names, and
command names
abc = 'student' % a string variable
2
abc =
student
end = 1 % absolutely bad variable
Error: Missing operator, comma, or semicolon.
sin(2) % the value of
math.function sin(x) at x = 2
sin = 10 % sin becomes the
variable name
sin(2) % sin is no longer associated with the name for math.function sin(x)
0.9093
sin =
10
??? Index exceeds matrix dimensions.
% Another example of relatively bad
variable:
x = 2 + 3*i % x is a
complex number, since i = sqrt(-1)
i = 2 % i is assigned to
another number, 2
x = 2 + 3*i % i is not longer associated with the name for sqrt(-1)
2.0000 + 3.0000i
i =
2
x =
8
% Special numbers and variable names:
eps, pi, inf, NaN, date
2.2204e-016
ans =
3.1416
ans =
Inf
ans =
NaN
ans =
14-Dec-2001
·
all
computations are performed in double precision
·
format: switches between different output formats
format short; pi % 4 decimal digits
format long; pi % 14 decimal digits
format short e; pi % 4 decimal digits in exponential notations
format long e; pi % 14 decimal digits in exponential notations
format hex; pi % hexagonal representation
3.1416
ans =
3.14159265358979
ans =
3.1416e+000
ans =
3.141592653589793e+000
ans =
400921fb54442d18
·
clear variablename: delete value of "variablename"from
the current working space
·
clear all: clear values of all variables
·
clc – clear
the command window and moves the cursor to the top
Arithmetic operations:
·
"+", "-", "*", "/" – conventional operators for
addition, subtraction, multiplication and division
·
"\" – inverse division (3\1 = 1/3 = 0.33333)
·
"^" – power operator
·
more
operators are available for vectors and matrices
·
";"
– a command is performed but the result is not printed, one line may contain
several commands
·
","
– a separator of different commands, the result is printed for each command
·
"…"
– a continuation of a long command into several lines
·
"%"
– a comment sign, the whole line after the comment sign is ignored in
computations
r = 10; % radius of a sphere
vol = 4*pi
...*r^3/3; % computation of
volume of a sphere
r,vol
10
vol =
12.5664
Vectors as one-dimensional arrays:
·
column-vectors: x = [x1 ; x2 ; … ; xN]
·
row-vectors: x = [x1, x2, … , xN]
x = [ 0, 0.5, 1, 1.5, 2], y = [ 0; 0.5; 1; 1.5; 2]
x = 0 0.5000
1.0000 1.5000 2.0000
y = 0
0.5000
1.0000
1.5000
2.0000
·
access to individual elements: x(j), y(k)
ans = 2
??? Index exceeds matrix dimensions.
??? Index into matrix is negative or zero.
·
resize:
x(8) = 4; x % increase the dimension of x to 8 and assign 4 to x(8)
0 0.5000 1.0000 1.5000 2.0000 0 0 4.0000
% reduce the dimension of y to 3 and assign y(2),y(3),y(4) to a new vector
0.5000
1.0000
1.5000
·
transpose: x',y'
0.5000 1.0000
1.5000
z2 =
0.5000
1.0000
1.5000
·
length: computes the number of elements in the vector
·
size:
computes the dimension of the vector, taking into account its horizontal or
vertical structure
length(z1), length(z2), size(z1), size(z2)
3
ans =
3
ans =
1 3
ans =
3 1
·
initialization of equally-spaced vectors:
x1 = 0 : 0.1
: 0.25 % the last element is not reached
x2 = 0 : 5 % default step size = 1
x3 = 5 : -1 : 0 % the step size can be negative
x4 = 0 : -1 : 1 % non-valid operation produces empty vector
length(x4) % the empty vector x4 has a zero length
0 0.1000
0.2000
x2 =
0 1
2 3 4 5
x3 =
5 4
3 2 1 0
x4 =
Empty matrix: 1-by-0
ans =
0
y(1:3:12) = 1; y(2:3:12) = 2; y(3:3:12) = 3; y
1 2 3 1 2 3 1 2 3 1 2 3
% the built-in function
never mismatches the last element
x4 = linspace(0,-1,10) %
the vectors are always non-empty
h1 = x1(2) - x1(1)
% the step size can be easily computed (need not to be given)
h4 = x4(2) - x4(1)
0 0.0625 0.1250 0.1875
0.2500
x4 =
0 -0.1111
-0.2222 -0.3333 -0.4444
-0.5556 -0.6667 -0.7778
-0.8889 -1.0000
h1 =
0.0625
h4 =
-0.1111
·
vector operations:
x = [ 0, 1, 2
]; y = [ 0.1, 0, 0.1]; z = [ 10, 20 ];
x + y
x - y
0.1000 1.0000
2.1000
ans =
-0.1000 1.0000 1.9000
Matrix dimensions must agree.
0.2 * x
0.2000 1.2000
2.2000
ans =
0 0.2000 0.4000
x.*y % main
advantage of MATLAB (matrix laboratory)
x./y % no loops for accessing individual elements are required
x.\y % inverse division, the same as y./x
0 0
0.2000
Warning: Divide by zero.
ans =
0 Inf
20
Warning: Divide by zero.
ans =
Inf 0 0.0500
Matrix dimensions must agree.
x.^y % the same as
x(k)^(y(k)) for any k
3.^x % the same as 3^(x(k)), the output is a vector of the same structure as x
0 1
8
ans =
0.7943 0
0.7943
ans =
0 1.0000
1.0718
ans =
1 3 9
·
appending vectors
w = [x'; y'; z']
0 1.0000
2.0000 0.1000 0
0.1000 10.0000 20.0000
w =
0
1.0000
2.0000
0.1000
0
0.1000
10.0000
20.0000
·
deleting elements of vectors
w(3:6) = []; w
0 2
w =
0
1
10
20
str1(1:6) % the first three characters are displayed
length(str1) % the length of character vector "str1"
str2 = 'Pelinovsky20';
str3 = [str1, str2] % concatanetion of two string vectors
str4 = [str1(1:6),' ',str2(1:10)]
Dmitry
ans =
8
str3 =
Dmitry10Pelinovsky20
str4 =
Dmitry Pelinovsky