Download presentation
Presentation is loading. Please wait.
Published byHelena Molly Porter Modified over 9 years ago
1
Introduction to Matlab Part II 1Daniel Baur / Introduction to Matlab Part II Daniel Baur / Michael Sokolov ETH Zurich, Institut für Chemie- und Bioingenieurwissenschaften ETH Hönggerberg / HCI F128 / F123 – Zürich E-Mail: daniel.baur@chem.ethz.ch michael.sokolov@chem.ethz.ch http://www.morbidelli-group.ethz.ch/education/snm/Matlab
2
Review of vectors Vector handling a = [1 2 3]; a = [1, 2, 3]; Row vector: a = [1 2 3]; a = [1, 2, 3]; b = [1; 2; 3]; Column vector: b = [1; 2; 3]; c = 0:5:100; (or 0:100) Vector with defined spacing: c = 0:5:100; (or 0:100) d = linspace(0, 100, 21); e = logspace(0, 3, 25); Vector with even spacing: d = linspace(0, 100, 21); e = logspace(0, 3, 25); f = e'; Transpose: f = e'; 2Daniel Baur / Introduction to Matlab Part II
3
Review of matrices Creating matrices A = [1 2 3; 4 5 6; 7 8 9]; Direct: A = [1 2 3; 4 5 6; 7 8 9]; B = zeros(3,2); Matrix of zeros: B = zeros(3,2); C = ones(3,2); Matrix of ones: C = ones(3,2); R = rand(3,2); Random matrix: R = rand(3,2); RD = randn(2,3); Normally distributed: RD = randn(2,3); Matrix characteristics [nRows, nColumns] = size(A); nColumns = size(A,2); Size [nRows, nColumns] = size(A); nColumns = size(A,2); maxDim = length(A); Largest dimension maxDim = length(A); nElements = numel(A); Number of elements nElements = numel(A); Creating vectors v = ones(3,1); Single argument calls create a square matrix, therefore use commands like v = ones(3,1); to create vectors 3Daniel Baur / Introduction to Matlab Part II
4
Review of accessing elements a = (1:5).^2; Vectors ( a = (1:5).^2; ) a(3); Single element: a(3); a([1, 3]); Multiple elemets: a([1, 3]); a(2:4); Range of elements: a(2:4); a(end); Last element: a(end); a(:); All elements: a(:); A = a'*a; Matrices ( A = a'*a; ) A(1,3); Single element: A(1,3); A(2:3,2:3); Submatrix: A(2:3,2:3); A(2,:);A(:,3); Entire row / column A(2,:);A(:,3); A([2, 3],[1, 3, 5]); Multiple rows / columns A([2, 3],[1, 3, 5]); A(2,end);A(end,3); Last element of row / column A(2,end);A(end,3); b = A(:); All elements as column vector b = A(:); 4Daniel Baur / Introduction to Matlab Part I a(:) always returns a column vector.
5
Review of matrix operations Create a Matrix 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 D*C Not commutative! A^2 Element-by-element operations A.^2 E = 2.^A; E = 2.^A; E i,j = 2^A i,j sqrt(A) Functions using matrices sqrtm(A) sqrtm(A)^2 inv(A) 5Daniel Baur / Introduction to Matlab Part II
6
Review of matrix operations (continued) Matrix properties sum(A,dim); det(A); inv(A); eigs(A); More creation options and reshaping B = [ones(4); diag(1:4); eye(4)]; B = reshape(B, 24, 6); C = repmat(B, 1, 3); Solution of linear algebraic systems A = rand(3); b = rand(3,1); x = A\b; 6Daniel Baur / Introduction to Matlab Part II Do not use x = inv(A)*b!
7
M-Files What is an m-file? An m-file is a collection of commands. It is equivalent to programs, functions, subroutines, modules, etc. in other programming languages. It can even contain entire class definitions. What can I use it for? Creating a permanent record of what you are doing Experimenting on an algorithm Writing utilities and whole programs What types of m-files are there? Script m-file: No input and output. Operates on workspace variables. function Function m-file: Starts with the function key-word, accepts inputs and gives outputs. All variables are local. classdef Class m-file: Contains the classdef key-word, used in object oriented programming. 7Daniel Baur / Introduction to Matlab Part II
8
Example of a Script Problem definition v = 1e-17*ones(100,1); sum(v) v1 = [v;1]; sum(v1)-1 v2 = [1;v]; sum(v2)-1 Create the «mysum» script (In Matlab:) File New M-File clear all; close all; v = 1e-17*ones(100,1); v1 = [v;1]; s = sum(v1); s-1 (In Editor:) File Save As... mysum.m Check the directory path! 8Daniel Baur / Introduction to Matlab Part II Avoid reserved words and built-in function names
9
You should see How to run the script? From the command window (check the path!) From the editor (press Run button or use Debug Run or press F5) Example of a Script (Continued) 9Daniel Baur / Introduction to Matlab Part II The editor has found unusual syntax or even a syntax error here! Mouse-over to see what is the issue. The editor has found unusual syntax or even a syntax error here! Mouse-over to see what is the issue.
10
Relational and logical operators Relational operators are straight forward in Matlab: , =, ==, ~= The NOT operator is the tilde symbol «~» For the logical operators AND and OR, two kinds exist: &&, || &&, || Operators with short-circuiting (scalars only) &, | &, | Operators for element-by-element comparisons Logical operators return logical types Example of how short-circuitung operators work: 10Daniel Baur / Introduction to Matlab Part I In the context of if and while, both kinds of operators short-circuit.
11
Relational and logical operators (continued) Example of element-by-element comparison: isequal(A,B) Compare entire matrices with isequal(A,B) 11Daniel Baur / Introduction to Matlab Part I All numbers other than 0 evaluate to TRUE
12
Relational and logical Operators (continued) There are a some more operators that you can use: any(A,dim); any(A,dim); True if at least one element is ≠ 0 all(A,dim); all(A,dim); True if all elements are ≠ 0 xor(A,B); xor(A,B); True if one is = 0 and the other is ≠ 0 isnumeric(A); isnumeric(A); True if A is a numerical type isfinite(A); isfinite(A); True for each element if it is neither NaN nor inf Indexing is possible through logical variable types (try it!) A(A<0); A(A<0); All elements < 0 A(isfinite(A)); A(isfinite(A)); All elements except NaN and inf A(A == B); A(A == B); All elements that are equal to their counterpart You can even edit elements directly this way 12Daniel Baur / Introduction to Matlab Part I
13
For-loops in Matlab General form of for-loops: Example: 13Daniel Baur / Introduction to Matlab Part II If Matlab gets stuck in a loop (or any other calculation), use ctrl+c to terminate the program.
14
Examples with for-loops Try these: 14Daniel Baur / Introduction to Matlab Part II Loops are almost always slower than matrix / vector calculations!
15
While-loops in Matlab General form of while-loops: while expression statements; end The statements are executed as long as the expression is true (or ≠ 0) The statements are executed an indefinite number of times 15Daniel Baur / Introduction to Matlab Part II It is good practice to limit the number of iterations (eg. while n < nmax)
16
Examples of loops Try the following: 16Daniel Baur / Introduction to Matlab Part II Vectorize your operations and use built-in functions. If you must use a loop, preallocate your variables.
17
Exercise help rand 1.Create the matrix A(5,5) with random elements between -2 and 2 (type help rand to figure out how the function works) 2.Set all negative elements of A to 1.5 (use logical indexing!) 3.Create a matrix B consisting of the 2 nd and 3 rd column of A 4.Create a matrix C consisting of the 1 st and 4 th row of A 5.Calculate D = A∙B∙C. What is the size of D? 6.Add D+A = E. Multiply the transpose of E with B to create F. 7.Create the matrix G so that G i,j = 2+2*C i,j 2 / F j,i 8.Create an equally spaced row vector b with 5 elements from 3 to 38 9.Find the solution of the linear system A∙x = b’ 10.Find the solution of y∙A = b 11.Compute the 2-norm of x 12.Find the vector v representing the 2-norm of each column of A 13.Find the values of the series 17Daniel Baur / Introduction to Matlab Part II
18
Solutions (one Possibility) 18Daniel Baur / Introduction to Matlab Part II
19
Controlling program flow The if block has the following structure if expression statements; elseif expression statements; else statements; end Example 19Daniel Baur / Introduction to Matlab Part II The elseif and else clauses are optional.
20
Controlling program flow (Continued) The switch block does multiple comparisons at once switch variable case expression statements; case expression statements;... otherwise statements; end Example 20Daniel Baur / Introduction to Matlab Part II Message identifier Error message
21
Controlling program flow (Continued) Other commands for controlling program flow are: break; break; Exits the current loop continue; continue; Immediately goes to the next iteration return; return; Terminates the entire program / function 21Daniel Baur / Introduction to Matlab Part II
22
Controlling program flow (Continued) The try block checks for errors occuring during execution try statements; catch err statements; end If an error occurs in the try block, the catch block is executed immediately instead of continuing Example 22Daniel Baur / Introduction to Matlab Part II
23
Data type «struct» What is a struct? Structs are arrays with a property called «fields». Fields hold different kinds of data and are accessed by dots. Structs are very useful for bundling different kinds of information. Example (try it out!) comp(1).name = 'water'; comp(1).Mw = 18.02; comp(1).density = 1; comp(2).name = 'ethanol'; comp(2).Mw = 46.06; comp(2).density = 0.789; 23Daniel Baur / Introduction to Matlab Part II
24
Data type «struct» 24Daniel Baur / Introduction to Matlab Part II comp(1).name = 'water'.MW = 18.02.density= 1.Antoine= [8.07; 1730; 233]; comp(2).name = 'ethanol'.MW = 46.06.density= 0.789.Antoine= [8.20; 1643; 230]; comp(3).name =....MW =....density=....Antoine=... comp(1,n)struct
25
Exercise Create a new m-file called quadratic_roots.m Implement the following algorithm If b > 0 Elseif b < 0 Else 25Daniel Baur / Introduction to Matlab Part II
26
Possible Solution 26Daniel Baur / Introduction to Matlab Part II
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.