Presentation Title - Information Technology Services

Download Report

Transcript Presentation Title - Information Technology Services

Introduction to MATLAB

Zongqiang Liao

Research Computing Group UNC-Chapel Hill

        Introduction Getting started Mathematical functions Matrix generation Matrix and array operations Reading and writing data files Basic plotting Basic programming

Course outline

its.unc.edu

2

its.unc.edu

Introduction

Introduction

   The name MATLAB stands for MATrix LABoratory  It is good at dealing with matrices  Vendor’s website: http//:www.mathworks.com

Advantages of MATLAB  Easiness of use  Powerful build-in routines and toolboxes  Good visualization of results Disadvantage of MATLAB  Can be slow

its.unc.edu

4

its.unc.edu

Getting started

 MATLAB desktop  The Command Window  The Command History  The Workspace  The Current Directory  The Help Browser  The Start Button

Getting started

its.unc.edu

6

Getting started

 Keeping track of your work session  diary command >> diary or >> diary FileName  Stop the recording >> diary off  Start the recording again >>diary on

its.unc.edu

7

Getting started

its.unc.edu

Using MATLAB as a calculator >> 1+2*3 ans = 7  You may assign the value to a output variable >> x=1+2*3 x= 7  x can be used in the some calculation later >> 4*x ans = 28

8

Getting started

 Suppressing output  You can suppress the numerical output by putting a semicolon (;) at the end of the line >> t=-13;

its.unc.edu

 We can place several statements on one line, separated by commas (,) or semicolons(;) >> t=-13; u=5*t, v=t^2+u u= -65 v= 104

9

Getting started

 Managing the workspace  The results of one problem may have an effect on the next one  Issue a clear command at the start of each new independent calculation >> clear or >> clear all

its.unc.edu

10

Getting started

 Miscellaneous commands  To clear the Command Window >> clc  To abort a MATLAB computation ctrl-C  To continue a line …

its.unc.edu

11

Getting started

 Getting help  Use help to request info on a specific function >> help sqrt  Use doc function to open the on-line version of the help menu >> doc plot  Use lookfor to find function by keywords >> lookfor functionkeyword

its.unc.edu

12

its.unc.edu

Mathematical functions

Mathematical functions

 Lists of build-in mathematical functions  Elementary functions >> help elfun  Special functions >> help specfun  Such as sin(x), cos(x), tan(x), e x , ln(x)

its.unc.edu

14

Mathematical functions

 Example 1 Calculate z=e -a

y

>> a=5; x=2; y=8; >> z=exp(-a)*sin(x)+10*sqrt(y) z= 28.2904

its.unc.edu

15

Mathematical functions

 Example 2 Calculate the roots of a equation ax 2 +bx+c=0, for a=2, b=1, and c=-4

its.unc.edu

>> a=2; b=1; c=-4; >> x1=(-b+sqrt(b^2-4*a*c))/(2*a) x1= 1.1861

>> x2=(-b-sqrt(b^2-4*a*c))/(2*a) x2= -1.1861

16

 Example 3 >> log(142) ans= 4.9558

>> log10(142) ans= 2.1523

its.unc.edu

Mathematical functions

17

 Example 4

its.unc.edu

>> sin(pi/4) ans = 0.7071

Calculate e 10 >> exp(10) ans = 2.2026e+004

Mathematical functions

18

its.unc.edu

Matrix generation

Matrix generation

 The name MATLAB is taken from ”MATrix LABoratory.” It is good at dealing with matrices.  Actually all variables in MATLAB are matrices.  Scalars are 1-by-1 matrices  vectors are N-by-1 (or 1-by-N) matrices.

 You can see this by executing >> size(x)

its.unc.edu

20

Matrix generation

 Entering a matrix  Begin with a square bracket, [  Separate elements in a row with spaces or commas (,)  Use a semicolon (;) to separate rows  End the matrix with another square bracket, ]

its.unc.edu

21

Matrix generation

• Entering a matrix: A typical example >> A=[1 2 3; 4 5 6; 7 8 9] >> A= 1 2 3 4 5 6 7 8 9

its.unc.edu

22

Matrix generation

 Matrix indexing  View a particular element in a matrix  For example, A(1,3) is an element of first row and third column >>A(1,3)

its.unc.edu

>>ans = 3

23

Matrix generation

 Colon operator in a matrix  Colon operator is very useful in the usage of MATLAB  For example, A(m:n,k:l) specifies portions of a matrix A: rows m to n and column k to l.

its.unc.edu

24

Matrix generation

 Colon operator in a matrix  Example 1 Rows 2 and 3 and columns 2 and 3 of matrix A >>A(2:3, 2:3) ans = 5 6 8 9

its.unc.edu

25

Matrix generation

 Colon operator in a matrix  Example 2 Second row element of matrix A >>A(2, :) ans = 4 5 6

its.unc.edu

26

 Colon operator in a matrix  Example 3 Last two columns of matrix A >>A(:, 2:3)

its.unc.edu

ans = 2 3 5 6 8 9

Matrix generation

27

Matrix generation

 Colon operator in a matrix  Example 4 Last rows of matrix A >>A(2:end, :) ans = 4 5 6 7 8 9

its.unc.edu

The end here denotes the last index in the specified dimension

28

Matrix generation

 Transposing a matrix  The transposing operation is a single quote (’) >>A’ ans = 1 4 7 2 5 8 3 6 9

its.unc.edu

29

Matrix generation

 Concatenating matrices  Matrices can be made up of sub-matrices

its.unc.edu

>>B= [A 10*A; -A [1 0 0; 0 1 0; 0 0 1]] B = 1 2 3 10 20 30 4 5 6 40 50 60 7 8 9 70 80 90 -1 -2 -3 1 0 0 -4 -5 -6 0 1 0 -7 -8 -9 0 0 1

30

Matrix generation

 Generating vectors: colon operator  Suppose we want to enter a vector x consisting of points (0, 0.1, 0.2, 0.3,…,5) >>x=0:0.1:5;  All the elements in between 0 and 5 increase by one tenth

its.unc.edu

31

Matrix generation

 Generating vectors: linear spacing  Suppose we want to have direct control over the number of points.

>>y=linspace(a, b, n) For example, >>theta=linspace(0, 2*pi, 101)

its.unc.edu

Creates a vector of 101 elements in the interval

32

Matrix generation

 

its.unc.edu

Elementary matrix generators  eye(m,n)  eye(n)  zeros(m,n)  ones(m,n)  diag(A)  rand(m,n)  randn(m,n)  logspace(a,b,n) For a complete list of elementary matrices >>help elmat >>doc elmat

33

its.unc.edu

Matrix arithmetic operation

 Arithmetic operations  A+B or B+A  A*B  A^2 or A*A  a*A or A*a

its.unc.edu

Matrix arithmetic operation

35

 Matrix functions  det  diag  eig  inv  norm  rank

its.unc.edu

Matrix arithmetic operation

36

 Matrix functions  For example >> A=[1 2 3; 4 5 6; 7 8 0]; >>inv(A) ans = -1.7778 0.8889 -0.1111

1.5556 -0.7778 0.2222

-0.1111 0.2222 -0.1111

>>det(A) ans = 27

Matrix arithmetic operation

its.unc.edu

37

Matrix arithmetic operation

 More matrix operations  Calculate the sum of elements in the second row of matrix A >> sum(A(2,:))  Calculates the sum of the last column of A >>sum(A(:,end))

its.unc.edu

38

its.unc.edu

Array arithmetic operation

Array arithmetic operation

 Array operations  Array operations are done element-by-element  The period character (.) is used in array operations  The matrix and array operations are the same for addition (+) and subtraction (-)

its.unc.edu

40

Array arithmetic operation

 Array operations If A and B are two matrices of the same size with elements A=[

a ij

] and B=[

b ij

]  C=A.*B produces a matrix C of the same size with elements

c ij

=

a ij b ij

 C=A./B produces a matrix C of the same size with elements

c ij

=

a ij /b ij

 C=A.^2 produces a matrix C of the same size with elements

c ij

=

a ij 2

its.unc.edu

41

 Array operations  Example 1   1   4 7 2 5 8 3 6 9         10 40 70 20 50 80 30   60 90  

Array arithmetic operation

its.unc.edu

>>C=A.*B C= 10 40 90 160 250 360 490 640 810

42

 Array operations  Example 2

its.unc.edu

>>C=A.^2 C= 1 4 9 16 25 36 49 64 81

Array arithmetic operation

43

its.unc.edu

Reading and writing data files

 Save and load data file

Reading and writing data files

 Use command save to save the variable in the workspace  For example, use command save: >> x = [1 3 -4]; >> y = [2 -1 7]; >> z = [3 2 3]; >> save Filename.mat

The command saves all variables in the workspace into a binary file Filename.mat

its.unc.edu

45

 Save and load data file

Reading and writing data files

 Save only certain variables by specifying the variable names after the file name >> save Filename.mat x y  Save variables into ASCII data file >> save Filename.dat x y –ascii

its.unc.edu

46

 Save and load data file

Reading and writing data files

 The data can be read back with the load command >> load Filename.mat

 Load only some of the variables into memory >> load Filename.mat x  Load the ASCII data file back into memory >> load Filename.dat -ascii

its.unc.edu

47

 The textread function

Reading and writing data files

 The load command assumes all of data is of a single type  The textread function is more flexible, it is designed to read ASCII files where each column can be of a different type  The command is: >> [A,B,C,...] = textread(filename, format, n);

its.unc.edu

48

 The textread function

Reading and writing data files

 For example, if a text file “mydata.dat” contains the following lines: tommy 32 male 78.8

sandy 3 female 88.2

alex 27 male 44.4

saul 11 male 99.6

 The command is: >> [name,age,gender,score] = textread(‘mydata.dat’, ‘%s %d %s %f’, 4);

its.unc.edu

49

Reading and writing data files

 C style read/write  MATLAB allows C style file access. It is crucially important that a correct data format is used.

 The steps are:  Open a file for reading or writing. A unique file identifier is assigned.

 Read the data to a vector  Close the file with file identifier

its.unc.edu

50

Reading and writing data files

 C style read/write: formatted files  In order to read results in formatted data files, the data format of the files must be know  For example, the numeric data is store in a file ‘sound.dat’. The commands reading data are: >> fid = fopen(‘sound.dat’,‘r’); >> data = fscanf(fid, ‘%f’); >> fclose(fid);

its.unc.edu

51

Reading and writing data files

 C style read/write: unformatted/binary files  In order to read results in unformatted data files, the data precision of the files must be specified  For example, the numeric data is store as floating point numbers using 32 memory bits in a file ‘vib.dat’. The commands reading data are: >> fid1 = fopen(‘vib.dat’,‘rb’); >> data = fread(fid1, ‘float32’); >> fclose(fid);

its.unc.edu

52

its.unc.edu

Basic plotting

Basic plotting

 Plotting elementary functions  To plot the function y=sin(x) on the interval   First create a vector of x values ranging from 0 to 2   Compute the sine of these values  Plot the result

its.unc.edu

54

 Plotting elementary functions >>x=0:pi/100:2*pi; >>y=sin(x); >>plot(x,y)

Basic plotting

its.unc.edu

55

 Plotting elementary functions

Basic plotting

its.unc.edu

56

 Adding titles, axis labels >>xlabel (‘x=0:2\pi’); >>ylabel (‘Sine of x’); >>title (‘Plot of the Sine function’); The character \pi creates the symbol 

Basic plotting

its.unc.edu

57

Basic plotting

 Multiple data sets in one plot  Several graphs may be drawn on the same figure  For example, plot three related function of x: y 1  2 =cos(x), and y 3 =0.5cos(x), on the interval

its.unc.edu

58

Basic plotting

 Multiple data sets in one plot >> x = 0:pi/100:2*pi; >> y1 = 2*cos(x); >> y2 = cos(x); >> y3 = 0.5*cos(x); >> plot(x,y1,‘--’,x,y2,‘-’,x,y3,‘:’) >> xlabel(‘0 \leq x \leq 2\pi’) >> ylabel(‘Cosine functions’) >> legend(‘2*cos(x)’,‘cos(x)’,‘0.5*cos(x)’) >> title(‘Typical example of multiple plots’)

its.unc.edu

59

 Multiple data sets in one plot

Basic plotting

its.unc.edu

60

Basic plotting

 Subplot  The graphic window can be split into an m*n array of small windows.  The windows are counted 1 to mn row-wise, starting from the top left  x), y 2  interval [0, 1] 3  4  1 =cos(6 x), on the 

its.unc.edu

61

 Subplot >> x = 0:1/100:1; >> y1 = sin(3*pi*x); >> y2 = cos(3*pi*x); >> y3 = sin(6*pi*x); >> y4 = cos(6*pi*x); >> title(‘Typical example of subplots’) >> subplot(2,2,1), plot(x,y1) >> xlabel(‘0 \leq x \leq 1’), ylabel(‘sin(3 \pi x)’) >> subplot(2,2,2), plot(x,y2) >> xlabel(‘0 \leq x \leq 1’), ylabel(‘cos(3 \pi x)’) >> subplot(2,2,3), plot(x,y3) >> xlabel(‘0 \leq x \leq 1’), ylabel(‘sin(6 \pi x)’) >> subplot(2,2,4), plot(x,y4) >> xlabel(‘0 \leq x \leq 1’), ylabel(‘cos(6 \pi x)’)

its.unc.edu

Basic plotting

62

 Subplot

Basic plotting

its.unc.edu

63

its.unc.edu

Programming in MATLAB

Programming in MATLAB

 M-File scripts  In order to repeat any calculation and/or make any adjustments, it is create a file with a list of commands.

 “File  New  M-file”  For example, put the commands for calculating the roots of a quadratic equation into a file called quat.m

its.unc.edu

65

Programming in MATLAB

 M-File scripts  Enter the following statements in the file a = 2; b = 1; c = -4; x1=(-b+sqrt(b^2-4*a*c))/(2*a) x2=(-b-sqrt(b^2-4*a*c))/(2*a)  Save and name the file, quat.m

its.unc.edu

Note: the first character of the filename must be a letter

66

 M-File scripts  Run the file >> quat x1= 1.1861

x2= -1.1861

Programming in MATLAB

its.unc.edu

67

Programming in MATLAB

 M-File scripts  It is possible to modify the file so that it prompts you for inputting values of a, b, and c each time it runs.

a = input(‘Enter a: ’); b = input(‘Enter b: ’); c = input(‘Enter c: ’); x1=(-b+sqrt(b^2-4*a*c))/(2*a) x2=(-b-sqrt(b^2-4*a*c))/(2*a)

its.unc.edu

68

Programming in MATLAB

 M-File scripts  Re-run this file, you may type in the values for a, b and c >> quat Enter a: 3 Enter b: 4 Enter c: 5 x1 = -0.6667 + 1.1055i

x2 = -0.6667 - 1.1055i

its.unc.edu

69

Programming in MATLAB

 M-File scripts  MATLAB treats anything that appears after the % on a line as comments and these line will be ignored when the file runs % ------------------------------------------------------ % quat.m is to solve quadratic equation ax^2 + bx + c =0 % ------------------------------------------------------ a = input(‘Enter a: ’); b = input(‘Enter b: ’); c = input(‘Enter c: ’); x1=(-b+sqrt(b^2-4*a*c))/(2*a) x2=(-b-sqrt(b^2-4*a*c))/(2*a)

its.unc.edu

70

Programming in MATLAB

 M-File scripts  You can display the first block of comment lines in any .m file by issuing the help command >>help quat % ------------------------------------------------------ % quat.m is to solve quadratic equation ax^2 + bx + c =0 % -------------------------------------------------------

its.unc.edu

71

Programming in MATLAB

 M-File functions  Functions are routines that are general and applicable to many problems.

 To define a MATLAB function:  Decide a name for the function, making sure that it does not conflict a name that is already used by MATLAB.

 Document the function  The first command line of the file must have this format: Function[list of outputs]=functionname(list of inputs) …….

 Save the function as a M-file

its.unc.edu

72

Programming in MATLAB

 M-File scripts  In the previous example, it is convenient to have a separate file which calculate the roots of a quadratic equation % ------------------------------------------------------ % quatsolv.m is to compute the roots of quadratic % equation ax^2 + bx + c =0 % ------------------------------------------------------ function [x1, x2] = quatsolv(a, b, c) x1=(-b+sqrt(b^2-4*a*c))/(2*a) x2=(-b-sqrt(b^2-4*a*c))/(2*a)

its.unc.edu

73

Programming in MATLAB

 M-File scripts  To evaluate this function, a main program is needed. This main program provides input argumentss (a, b, and c) % ------------------------------------------------------ % main.m is to solve quadratic equation ax^2 + bx + c =0 % it calls the external function quatsolv.m

% ------------------------------------------------------ a = input(‘Enter a: ’); b = input(‘Enter b: ’); c = input(‘Enter c: ’); [x1, x2] = quatsolv(a, b, c); x1 x2

its.unc.edu

74

Programming in MATLAB

 M-File scripts  Example 2:  A new quatsolv2.m file is defined as the following: % --------------------------------------------------------- % quatsolv2.m is to compute the values of % quadratic equation ax^2 + bx + c % --------------------------------------------------------- function y = quatsolv2(x) global a b c y = a*x^2 + b*x + c;

its.unc.edu

75

Programming in MATLAB

 M-File scripts  Example 2:  A new main file % ------------------------------------------------------ % main2.m is to plot quadratic equation ax^2 + bx + c for % some range.

% it calls the external function quatsolv2.m

% ------------------------------------------------------ global a b c a = 1; b = 0; c = -2; fplot(‘quatsolv2’,[-4, 4])

its.unc.edu

76

 M-File scripts  If run main2.m

Programming in MATLAB

its.unc.edu

77

its.unc.edu

Questions and comments?

Questions and comments?

 For assistance with MATLAB, please contact the Research Computing Group:  Email: [email protected]

 Phone: 919-962-HELP  Submit help ticket at http://help.unc.edu

its.unc.edu

79