Introduction to Matlab
Download
Report
Transcript Introduction to Matlab
Introduction to Matlab 7
Part I
Daniel Baur
ETH Zurich, Institut für Chemie- und Bioingenieurwissenschaften
ETH Hönggerberg / HCI F128 – Zürich
E-Mail: [email protected]
http://www.morbidelli-group.ethz.ch/education/snm/Matlab
Daniel Baur / Introduction to Matlab Part I
1
File System
Your home directory is mapped to Y:\
The «my documents» folder points to Y:\private
File reading and writing can take longer than usual since
this is a network drive
Always save your data in your home directory!!
If you save it locally on the computer, it might be lost.
Daniel Baur / Introduction to Matlab Part I
2
Accessing your Data from Home
To access your home directory from outside the ETH,
connect to the ETH VPN and map the folder
\\d.ethz.ch\dfs\users\all\<Login-Name>
Windows: Map network drive (right-click on computer)
Mac: Go to / Connect to server
Unix: smbmount
Log in as d\<Login-Name>
Daniel Baur / Introduction to Matlab Part I
3
Introduction
What is Matlab?
Matlab is an interactive system for numerical computation
What are the advantages of Matlab?
Quick and easy coding (high level language)
Procedural coding and Object oriented programming are supported
Minimal effort required for variable declaration / initialization
Simple handling of vectors and matrices (MATrix LABoratory)
High quality built-in plotting functions
Full source-code portability
Strong built-in editing and debugging tools
Extremely diverse and high quality tool boxes available
Large community that contributes files and programs (mathworks file
exchange website)
Extensive documentation / help files
Daniel Baur / Introduction to Matlab Part I
4
Introduction (Continued)
What are the weaknesses of Matlab?
Not optimal for symbolic calculations (especially on the output side),
use Maple or Mathematica instead
Not as fast as C++ or Fortran, especially for computationally
demanding problems
Very expensive (except for students)
Where to get Matlab?
ETH students have free access to Matlab
Go to http://www.ides.ethz.ch/ and search for Matlab in the catalogue
You might have to set a password on the ides-website in order to log
in
Remember to choose the correct operating system
Map the web-drive \\ides.ethz.ch\<Login-Name> to download / install
Matlab
Daniel Baur / Introduction to Matlab Part I
5
Matlab environment (Try it out!)
Variable Inspector / Editor
File Structure
Workspace (Variable List)
Command Prompt
Command History
File Details
Daniel Baur / Introduction to Matlab Part I
6
Where to get help
If you know which command to use, but not how:
Type help command in the command window for quick help
Type doc command in the command window to open the help page
of the command
Right click on a word and select «help on selection», or click the
word and press F1
If you do not know which command to use:
There are extensive forums and other sources available on the
internet, google helps a lot!
Type doc or use the menu bar to open the user help and search for
what you need
Send me an email
Daniel Baur / Introduction to Matlab Part I
7
What if something goes wrong?
The topmost error message is usually the one containing
the most useful information
The underlined parts of the message are actually links that
you can click to get to the place where the error happened!
If a program gets stuck, use ctrl+c to terminate it
Daniel Baur / Introduction to Matlab Part III
8
Variables in Matlab
Try:
Valid examples:
Invalid examples:
a = 1
speed = 1500
Cost_Function = a + 2
String = 'Hello World'
2ndvariable = 'yes'
First Element = 1
Rules
Variable names are case sensitive («NameString» ≠ «Namestring»)
Maximum 63 characters
First character must be a letter
Letters, numbers and underscores «_» are valid characters
Spaces are not allowed
Daniel Baur / Introduction to Matlab Part I
9
Variables in Matlab (Continued)
Try out these commands:
a = 2
b = 3;
c = a+b;
d = c/2;
d
who
whos
clear
who
TestString = 'Hello World'
Note that every variable has a
size (all variables are arrays!)
No need to declare variables
or specify variable types!
Daniel Baur / Introduction to Matlab Part I
10
Variables in Matlab (Continued)
Variable assignments
a
b
c
a
a
=
=
=
+
=
2;
3;
a + b;
b
b = 2;
The result is stored in «c»
The result is stored in «ans»
This produces an error
By pressing the up and down arrows, you can scroll
through the previous commands
A semicolon «;» at the end of a line supresses command
line output
By pressing the TAB key, you can auto-complete variable
and function names
Daniel Baur / Introduction to Matlab Part I
11
Vectors in Matlab
Vector handling is very intuitive in Matlab (try these!):
Row vector:
Column vector:
Vector with defined spacing:
Vector with even spacing:
Transpose:
a
a
b
c
d
e
f
=
=
=
=
=
=
=
[1 2 3]
[1, 2, 3]
[1; 2; 3]
0:5:100 (unit: 0:100)
linspace(0, 100, 21)
logspace(0, 3, 25)
e'
You should see
Daniel Baur / Introduction to Matlab Part I
12
Vector arithmetics
Try these out:
a = [1, 2, 3]
b = [1; 2; 3]
Operations with constants
c = 2*a
d = 2+a
Vector addition
f = a + c
Element-by-Element
operations
a.^2
d = d./a
Functions using element-byelement operations (examples)
b = sqrt(b)
c = exp(c)
d = factorial(d)
Vector product
A = b*a
A is a (3,3) matrix!
a*a
Error! (1,3)*(1,3)
a^2
Daniel Baur / Introduction to Matlab Part I
Operations
with
scalar
constants (except power) are
always element-by-element.
13
Vector arithmetics (Continued)
Notes on vector multiplication
a = [1, 2, 3]
a 1 2 3
b = [1; 2; 3]
1
b 2
3
c = a*b
d = b*a
(1,3)*(3,1) = (1,1) Scalar (dot product)
(3,1)*(1,3) = (3,3) Matrix
e = a.*a
f = a.*b
(1,3).*(1,3) = (1,3) Vector (element-by-element)
Error! Vectors must be the same size for
element-by-element operations
Remember the rules for vector /
matrix addition, subraction and
multiplication!
Daniel Baur / Introduction to Matlab Part I
14
Matrices in Matlab
Creating matrices (try these out!)
Direct:
Matrix of zeros:
Matrix of ones:
Random matrix:
Normally distributed:
A = [1 2 3; 4 5 6; 7 8 9]
B = zeros(3); B = zeros(3,2);
C = ones(3); C = ones(3,2);
R = rand(3); R = rand(3,2);
RD = randn(3)
Matrix characteristics
Size
Largest dimension
Number of elements
[nRows, nColumns] = size(A)
nColumns = size(A,2)
maxDim = length(A)
nElements = numel(A)
Creating vectors
Single argument calls create a square matrix, therefore use
commands like v = ones(3,1); to create vectors
Daniel Baur / Introduction to Matlab Part I
15
Accessing elements of vectors / matrices
Try:
Vectors
Single element:
Multiple elements:
Range of elements:
Last element:
All elements:
Matrices
a = (1:5).^2
a(:) always returns a
A = a'*a;
column vector.
Single element:
Submatrix:
Entire row / column:
Multiple rows / columns:
Last element of row / column:
All elements as column vector:
Daniel Baur / Introduction to Matlab Part I
16
Arithmetics with matrices
Try these out:
A = rand(3)
Operations with constants
B = 2*A
C = 2+A
Matrix addition; Transpose
D = A+C
D = D'
Deleting rows / columns
C(3,:) = []
D(:,2) = []
Matrix multiplication
C*D
D*C
Not commutative!
A^2
Element-by-element operations
A.^2
E = 2.^A
Ei,j = 2^Ai,j
sqrt(A)
Functions using matrices
sqrtm(A)
sqrtm(A)^2
inv(A)
Daniel Baur / Introduction to Matlab Part I
17
Matrix divison
Consider the following
A = rand(3); B = rand(3);
A*C = B
C = A-1*B = inv(A)*B
Matrix inversion is one of the most computationally expensive
operations overall, so what should we do instead?
Matlab has more sophisticated built-in algorithms to do matrix
divisions which are called left- and right divide; They are symbolized
by the operators \ and /, respectively.
inv(A)*B = A-1*B A\B;
A*inv(B) = A*B-1 A/B;
Daniel Baur / Introduction to Matlab Part I
18
More matrix manipulations
Try:
Matrices in block form
B = [ones(3); zeros(3); eye(3)]
From matrices to vectors
b = B(:)
From vectors to matrices
b = 1:12; B = zeros(3,4); B(:) = b
B = reshape(b, 3, 4)
C = repmat(b, 5, 1)
Diagonal matrices
b = 1:12; D = diag(b)
Meshes
[X, Y] = meshgrid(0:2:10, 0:5:40)
Daniel Baur / Introduction to Matlab Part I
19
More Matrix Manipulations (Continued)
Daniel Baur / Introduction to Matlab Part I
20
Operators for matrices
Consider the operators:
[nRows, nColumns] = size(A);
[maxValue, Position] = max(A,[],dim);
sum(A,dim);
sum(A(:));
Also: min(A)
Also: mean(A), var(A), std(A), ...
det(A);
inv(A);
eig(A);
cond(A);
norm(A,p);
p
norm( A, p) xi
i 1
n
Daniel Baur / Introduction to Matlab Part I
1
p
21
Exercise
1. Compute the approximate value of exp(1)
Hints: Define a vector of length 20 for the first 20 elements of the
summation, then sum it up; The ! operator is factorial()
xk
e
k 0 k !
x
2. Compute the approximate value of exp(2)
3. Compute the cross product of u = [1, 3, 2] and v = [-1, 1, 2]
u2 v3 u3v2
u v u3v1 u1v3
u v u v
1 2 2 1
Daniel Baur / Introduction to Matlab Part I
22
Solution of Linear Algebraic Systems (Exercise)
1. Write the following system of equations in Matrix form:
2 x1 4 x2 8 x3 2
3 x1 2 x2 2 x3 5 A x b
x 3 x x 4
2
3
1
2. Is this system singular?
3. How would you solve this system?
Computing the inverse of a
matrix is very expensive.
Use left division instead!
Daniel Baur / Introduction to Matlab Part I
23
Exercise (Continued)
1. Solve the system
AX B
2 4 8
2 14 26
3 2 2 X 5 5 9
1 3 1
4 8 2
2. Now solve this system:
A
0
1 0
0 4
0 0
B
38
25
0
0
22
x
5
234
9
68
Daniel Baur / Introduction to Matlab Part I
24