1 / 26

Introduction to Matlab

Introduction to Matlab. Part II.

jcatt
Télécharger la présentation

Introduction to Matlab

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Introduction to Matlab Part II Tommaso Marcato/ Michael SokolovETH Zurich, Institut für Chemie- und BioingenieurwissenschaftenETH Hönggerberg / HCI E120 / F137 – ZürichE-Mail: tommaso.marcato@chem.ethz.chmichael.sokolov@chem.ethz.chhttps://shihlab.ethz.ch/education/Snm/matlab-introduction Tommaso Marcato / Introduction to Matlab Part II

  2. Review of vectors • Vector handling • Row vector: a = [1 2 3]; a = [1, 2, 3]; • Column vector: b = [1; 2; 3]; • Vector with defined spacing: c = 0:5:100; (or 0:100) • Vector with even spacing: d = linspace(0, 100, 21);e = logspace(0, 3, 25); • Transpose: f = e'; Tommaso Marcato / Introduction to Matlab Part II

  3. Review of matrices • Creating matrices • Direct: A = [1 2 3; 4 5 6; 7 8 9]; • Matrix of zeros: B = zeros(3,2); • Matrix of ones: C = ones(3,2); • Random matrix: R = rand(3,2); • Normally distributed: RD = randn(2,3); • Matrix characteristics • Size [nRows, nColumns] = size(A); nColumns = size(A,2); • Largest dimension maxDim = length(A); • Number of elements nElements = numel(A); • Creating vectors • Single argument calls create a square matrix, therefore use commands like v = ones(3,1); to create vectors Tommaso Marcato / Introduction to Matlab Part II

  4. Review of accessing elements • Vectors (a = (1:5).^2;) • Single element: a(3); • Multiple elemets: a([1, 3]); • Range of elements: a(2:4); • Last element: a(end); • All elements: a(:); • Matrices (A = a'*a;) • Single element: A(1,3); • Submatrix: A(2:3,2:3); • Entire row / column A(2,:); A(:,3); • Multiple rows / columns A([2, 3],[1, 3, 5]); • Last element of row / column A(2,end); A(end,3); • All elements as column vector b = A(:); a(:) always returns a column vector. Tommaso Marcato / Introduction to Matlab Part II

  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 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) Tommaso Marcato / 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; • Do not usex = inv(A)*b! Tommaso Marcato / Introduction to Matlab Part II

  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 m-file: Starts with the functionkey-word, accepts inputs and gives outputs. All variables are local. • Class m-file: Contains the classdefkey-word, used in object oriented programming. Tommaso Marcato / 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! • Avoid reserved words and built-in function names Tommaso Marcato / Introduction to Matlab Part II

  9. Example of a Script (Continued) • 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) The editor has found unusual syntax or even a syntax error here! Mouse-over to see what is the issue. Tommaso Marcato / Introduction to Matlab Part II

  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: In the context of if and while, both kinds of operators short-circuit. Tommaso Marcato / Introduction to Matlab Part II

  11. Relational and logical operators (continued) • Example of element-by-element comparison: • Compare entire matrices with isequal(A,B) All numbers other than 0 evaluate to TRUE Tommaso Marcato / Introduction to Matlab Part II

  12. Relational and logical Operators (continued) • There are a some more operators that you can use: • any(A,dim); True if at least one element is ≠ 0 • all(A,dim); True if all elements are ≠ 0 • xor(A,B); True if one is = 0 and the other is ≠ 0 • isnumeric(A); True if A is a numerical type • 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); All elements < 0 • A(isfinite(A)); All elements except NaN and inf • A(A == B); All elements that are equal to their counterpart • You can even edit elements directlythis way Tommaso Marcato / Introduction to Matlab Part II

  13. For-loops in Matlab • General form of for-loops: • Example: • If Matlab gets stuck in a loop (or any other calculation), use ctrl+c to terminate the program. Tommaso Marcato / Introduction to Matlab Part II

  14. Examples with for-loops • Try these: • Loops are almost always slower than matrix / vector calculations! Tommaso Marcato / Introduction to Matlab Part II

  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 • It is good practice to limit the number of iterations (eg. while n < nmax) Tommaso Marcato / Introduction to Matlab Part II

  16. Examples of loops • Try the following: • If you must use a loop, preallocate your variables. • Vectorize your operationsand use built-in functions. Tommaso Marcato / Introduction to Matlab Part II

  17. Exercise • Create the matrix A(5,5) with random elements between -2 and 2 (type help rand to figure out how the function works) • Set all negative elements of A to 1.5 (use logical indexing!) • Create a matrix B consisting of the 2nd and 3rd column of A • Create a matrix C consisting of the 1st and 4th row of A • Calculate D = A∙B∙C. What is the size of D? • Add D+A = E. Multiply the transpose of E with B to create F. • Create the matrix G so that Gi,j = 2+2*Ci,j2 / Fj,i • Create an equally spaced row vector b with 5 elements from 3 to 38 • Find the solution of the linear system A∙x = b’ • Find the solution of y∙A = b • Compute the 2-norm of x • Find the vector v representing the 2-norm of each column of A • Find the values of the series Tommaso Marcato / Introduction to Matlab Part II

  18. Solutions (one Possibility) Tommaso Marcato / 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 The elseif and else clauses are optional. Tommaso Marcato / Introduction to Matlab Part II

  20. Controlling program flow (Continued) • The switch block does multiple comparisons at once • switch variablecase expression statements;case expression statements; ...otherwise statements;end • Example Message identifier Error message Tommaso Marcato / Introduction to Matlab Part II

  21. Controlling program flow (Continued) • Other commands for controlling program flow are: • break; Exits the current loop • continue; Immediately goes to the next iteration • return; Terminates the entire program / function Tommaso Marcato / 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 Tommaso Marcato / 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; Tommaso Marcato / Introduction to Matlab Part II

  24. Data type «struct» comp(1) comp(3) comp(2) .name= ... .name= 'ethanol' .name= 'water' .MW = ... .MW = 46.06 .MW = 18.02 .density = 0.789 .density = ... .density = 1 .Antoine = [ 8.07; 1730; 233]; .Antoine = ... .Antoine = [ 8.20; 1643; 230]; comp (1,n) struct Tommaso Marcato / Introduction to Matlab Part II

  25. Exercise • Create a new m-file called quadratic_roots.m • Implement the following algorithm • If b > 0 • Elseif b < 0 • Else Tommaso Marcato / Introduction to Matlab Part II

  26. Possible Solution Tommaso Marcato / Introduction to Matlab Part II

More Related