41
1 Matlab Lecture 1 - Introduction to MATLAB MATLAB is a high-performance language for technical computing. It integrates computation, visualization, and programming in an easy-to-use environment. Typical uses include: Math and computation Algorithm development Modeling, simulation, and prototyping Data analysis, exploration, and visualization Scientific and engineering graphics MATLAB is an interactive system whose basic data element is an array that does not require dimensioning. This allows you to solve many technical computing problems, especially those with matrix and vector formulations, in a fraction of the time it would take to write a program in a scalar non-interactive language such as C or Fortran.

Matlab1

Embed Size (px)

Citation preview

Page 1: Matlab1

1

Matlab Lecture 1 - Introduction to MATLAB

MATLAB is a high-performance language for technical computing. It integrates computation, visualization, and programming in an easy-to-use environment. Typical uses include:

Math and computation

Algorithm development

Modeling, simulation, and prototyping

Data analysis, exploration, and visualization

Scientific and engineering graphics

MATLAB is an interactive system whose basic data element is an

array that does not require dimensioning. This allows you to solve

many technical computing problems, especially those with matrix and

vector formulations, in a fraction of the time it would take to write a program in a scalar non-interactive language such as C or Fortran.

Page 2: Matlab1

2

Command Window

Command History

Workspace

Fig: Snap shot of matlab

Page 3: Matlab1

3

Entering Matrices - Method 1:Direct entry

4 ways of entering matrices in MATLAB: Enter an explicit list of elements Load matrices from external data files Generate matrices using built-in functions Create matrices with your own functions in M-files

Rules of entering matrices: Separate the elements of a row with blanks or commas Use a semicolon “;“ to indicate the end of each row Surround the entire list of elements with square brackets, [ ]

To enter Dürer's matrix, simply type: » A = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1]

MATLAB displays the matrix you just entered, A = 16 3 2 13 5 10 11 8 9 6 7 12 4 15 14 1

No need to define or declare size of A

Page 4: Matlab1

4

Entering Matrices - as lists

Why is this a magic square? Try this in Matlab :-

» sum(A)

ans =

34 34 34 34

» A’ans = 16 5 9 4 3 10 6 15 2 11 7 14 13 8 12 1 » sum(A’)’ans = 34

34 34

34

» sum(A)

ans =

34 34 34 34

» A’ans = 16 5 9 4 3 10 6 15 2 11 7 14 13 8 12 1 » sum(A’)’ans = 34

34 34

34

Compute the sum of each column

in A

Result in rowvector variable

ans

Transpose matrix A

Result in columnvector variable

ans

Compute the sum of each row

in A

Page 5: Matlab1

5

Entering Matrices - subscripts

A(i,j) refers to element in row i and column j of A :-

» A(4,2)

ans = 15

» A(1,4) + A(2,4) + A(3,4) + A(4,4)

ans = 34

» X = A;

» X(4,5) = 17X = 16 3 2 13 0 5 10 11 8 0 9 6 7 12 0 4 15 14 1 17

» A(4,2)

ans = 15

» A(1,4) + A(2,4) + A(3,4) + A(4,4)

ans = 34

» X = A;

» X(4,5) = 17X = 16 3 2 13 0 5 10 11 8 0 9 6 7 12 0 4 15 14 1 17

row colSlow way of finding

sum of column 4

Make another copyof A in X

‘;’ suppress output

Add one element in column 5, auto increase size of

matrix

Page 6: Matlab1

6

Entering Matrices - colon : Operator

» 1:10ans = 1 2 3 4 5 6 7 8 9 10» 100:-7:50

ans = 100 93 86 79 72 65 58 51

» 0:pi/4:pi

ans = 0 0.7854 1.5708 2.3562 3.1416

» A(1:k,j);

» sum(A(1:4,4))

ans = 34

» sum(A(:,end))ans = 34

» 1:10ans = 1 2 3 4 5 6 7 8 9 10» 100:-7:50

ans = 100 93 86 79 72 65 58 51

» 0:pi/4:pi

ans = 0 0.7854 1.5708 2.3562 3.1416

» A(1:k,j);

» sum(A(1:4,4))

ans = 34

» sum(A(:,end))ans = 34

‘:’ used to specify range of numbersendstart

incr

‘0’ to ‘pi’ with incr.of ‘pi/4’

First k elements ofthe jth column in A

last colShort-cut for “all rows”

Page 7: Matlab1

7

Expressions & built-in functions

» rho = (1+sqrt(5))/2rho = 1.6180

» a = abs(3+4i)a = 5

» z = sqrt(besselk(4/3,rho-i))z = 0.3730+ 0.3214i

» huge = exp(log(realmax))huge = 1.7977e+308

» toobig = pi*hugetoobig = Inf

» rho = (1+sqrt(5))/2rho = 1.6180

» a = abs(3+4i)a = 5

» z = sqrt(besselk(4/3,rho-i))z = 0.3730+ 0.3214i

» huge = exp(log(realmax))huge = 1.7977e+308

» toobig = pi*hugetoobig = Inf

pi 3.14159265

I or j Imaginary unit, -1

eps FP relative precision, 2-52

realmin Smallest FP number, 2-1022

realmax Largest FP number, (2-)21023

Inf Infinity

NaN Not-a-number

pi 3.14159265

I or j Imaginary unit, -1

eps FP relative precision, 2-52

realmin Smallest FP number, 2-1022

realmax Largest FP number, (2-)21023

Inf Infinity

NaN Not-a-number

Elementary functions

Complex number

Special functions

Built-in constants (function)

Page 8: Matlab1

8

Entering Matrices Method 2: Generation

» Z = zeros(2,4)Z = 0 0 0 0 0 0 0 0

» F = 5*ones(3,3)F = 5 5 5 5 5 5 5 5 5

» N = fix(10*rand(1,10))N = 4 9 4 4 8 ...

» R = randn(4,4)R = 1.0668 0.2944 0.6918 -1.4410 0.0593 -1.3362 0.8580 0.5711 -0.0956 0.7143 1.2540 -0.3999 -0.8323 1.6236 -1.5937 0.6900

» Z = zeros(2,4)Z = 0 0 0 0 0 0 0 0

» F = 5*ones(3,3)F = 5 5 5 5 5 5 5 5 5

» N = fix(10*rand(1,10))N = 4 9 4 4 8 ...

» R = randn(4,4)R = 1.0668 0.2944 0.6918 -1.4410 0.0593 -1.3362 0.8580 0.5711 -0.0956 0.7143 1.2540 -0.3999 -0.8323 1.6236 -1.5937 0.6900

Useful Generation Functions

zeros All zeros

ones All ones

rand Uniformly distributed randomelements between (0.0, 1.0)

randn Normally distributed random

elements, mean = 0.0, var = 1.0

fix Convert real to integer

Useful Generation Functions

zeros All zeros

ones All ones

rand Uniformly distributed randomelements between (0.0, 1.0)

randn Normally distributed random

elements, mean = 0.0, var = 1.0

fix Convert real to integer

Page 9: Matlab1

9

Entering Matrices - Method 3 & 4: Load & M-File

16.0 3.0 2.0 13.0 5.0 10.0 11.0 8.0 9.0 6.0 7.0 12.0 4.0 15.0 14.0 1.0

magik.dat

A = [ ...16.0 3.0 2.0 13.0 5.0 10.0 11.0 8.0 9.0 6.0 7.0 12.0 4.0 15.0 14.0 1.0];

magik.m

Three dots (…) meanscontinuation to next line

» magik» magik

.m files can be runby just typing itsname in Matlab

» load magik.dat » load magik.dat

Read data from fileinto variable magik

Page 10: Matlab1

10

Entering Matrices - Concatenate & delete

» B = [A A+32; A+48 A+16] B = 16 3 2 3 48 35 34 45 5 10 11 8 37 42 43 40 9 6 7 12 41 38 39 44 4 15 14 1 36 47 46 33

64 51 50 61 32 19 18 29 53 58 59 56 21 26 27 24 57 54 55 60 25 22 23 28 52 63 62 49 20 31 30 17

» B = [A A+32; A+48 A+16] B = 16 3 2 3 48 35 34 45 5 10 11 8 37 42 43 40 9 6 7 12 41 38 39 44 4 15 14 1 36 47 46 33

64 51 50 61 32 19 18 29 53 58 59 56 21 26 27 24 57 54 55 60 25 22 23 28 52 63 62 49 20 31 30 17

» X = A;» X(:,2) = []X = 16 2 13 5 11 8 9 7 12 4 14 1

» X = A;» X(:,2) = []X = 16 2 13 5 11 8 9 7 12 4 14 1

2nd column deleted

Page 11: Matlab1

11

MATLAB as a calculator

MATLAB can be used as a ‘clever’ calculator This has very limited value in engineering

Real value of MATLAB is in programming Want to store a set of instructions Want to run these instructions sequentially Want the ability to input data and output results Want to be able to plot results Want to be able to ‘make decisions’

Page 12: Matlab1

12

Example revisited

Can do using MATLAB as a calculator

>> x = 1:10; >> term = 1./sqrt(x); >> y = sum(term);

Far easier to write as an M-file

n

1i

...3

1

2

1

1

1

i

1y

Page 13: Matlab1

13

How to write an M-file

File → New → M-file Takes you into the file editor Enter lines of code (nothing happens) Save file (we will call ours L2Demo.m) Exit file Run file Edit (ie modify) file if necessary

Page 14: Matlab1

14

n = input(‘Enter the upper limit: ‘); x = 1:n; % Matlab is case sensitive term = sqrt(x); y = sum(term)

What happens if n < 1 ?

Page 15: Matlab1

15

n = input(‘Enter the upper limit: ‘); if n < 1

disp (‘Your answer is meaningless!’) end x = 1:n; term = sqrt(x); y = sum(term)

Jump to here if TRUE

Jump to here if FALSE

Page 16: Matlab1

16

Example of a MATLAB Function File

function [ a , b ] = swap ( a , b )

% The function swap receives two values, swaps them,

% and returns the result. The syntax for the call is

% [a, b] = swap (a, b) where the a and b in the ( ) are the

% values sent to the function and the a and b in the [ ] are

% returned values which are assigned to corresponding

% variables in your program.

temp=a;

a=b;

b=temp;

Page 17: Matlab1

17

Example of a MATLAB Function File

To use the function a MATLAB program could assign values to two variables (the names do not have to be a and b) and then call the function to swap them. For instance the MATLAB commands:

>> x = 5 ; y = 6 ; [ x , y ] = swap ( x , y )

result in:

x =

6

y =

5

Page 18: Matlab1

18

MATLAB Function Files

Referring to the function, the comments immediately following the function definition statement are the "help" for the function. The MATLAB command:

>>help swap %displays:

The function swap receives two values, swaps them,

and returns the result. The syntax for the call is

[a, b] = swap (a, b) where the a and b in the ( ) are the

values sent to the function and the a and b in the [ ] are

returned values which are assigned to corresponding

variables in your program.

Page 19: Matlab1

19

Decision making in MATLAB

For ‘simple’ decisions? IF … END (as in last example) More complex decisions? IF … ELSEIF … ELSE ... END

Example: Real roots of a quadratic equation

Page 20: Matlab1

20

Roots of ax2+bx+c=0

Roots set by discriminant Δ < 0 (no real roots) Δ = 0 (one real root) Δ > 0 (two real roots)

MATLAB needs to make decisions (based on Δ)

a

acbbx

2

42

acb 42

Page 21: Matlab1

21

One possible M-file

Read in values of a, b, c Calculate Δ IF Δ < 0 Print message ‘ No real roots’→ Go END ELSEIF Δ = 0 Print message ‘One real root’→ Go END ELSE Print message ‘Two real roots’ END

Page 22: Matlab1

22

My M-file

%========================================================== % Demonstration of an m-file % Calculate the real roots of a quadratic equation %==========================================================

clear all; % clear all variables clc; % clear screen

coeffts = input('Enter values for a,b,c (as a vector): '); % Read in equation coefficients a = coeffts(1); b = coeffts(2); c = coeffts(3);

delta = b^2 - 4*a*c; % Calculate discriminant % Calculate number (and value) of real roots if delta < 0 fprintf('\nEquation has no real roots:\n\n') disp(['discriminant = ', num2str(delta)]) elseif delta == 0 fprintf('\nEquation has one real root:\n') xone = -b/(2*a) else fprintf('\nEquation has two real roots:\n') x(1) = (-b + sqrt(delta))/(2*a); x(2) = (-b – sqrt(delta))/(2*a); fprintf('\n First root = %10.2e\n\t Second root = %10.2f', x(1),x(2)) end

Header

Initialisation

Calculate Δ

Make decisions based on value of Δ

Page 23: Matlab1

23

Command Window

ctrl-p Recall previous line ctrl-n Recall next line ctrl-b Move back one character ctrl-f Move forward one character ctrl - ctrl-r Move right one word ctrl - ctrl-l Move left one word home ctrl-a Move to beginning of line end ctrl-e Move to end of line esc ctrl-u Clear line del ctrl-d Delete character at cursor backspace ctrl-h Delete character before cursor ctrl-k Delete to end of line

ctrl-p Recall previous line ctrl-n Recall next line ctrl-b Move back one character ctrl-f Move forward one character ctrl - ctrl-r Move right one word ctrl - ctrl-l Move left one word home ctrl-a Move to beginning of line end ctrl-e Move to end of line esc ctrl-u Clear line del ctrl-d Delete character at cursor backspace ctrl-h Delete character before cursor ctrl-k Delete to end of line

Page 24: Matlab1

24

MATLAB Graphics_ Creating a Plot

» t = 0:pi/100:2*pi;» y = sin(t);» plot(t,y)» grid» axis([0 2*pi -1 1])

» xlabel('0 \leq \itangle \leq \pi')

» ylabel('sin(t)')

» title('Graph of the sine function')

» text(1,-1/3,'\it{Demonstration of plotting}')

» t = 0:pi/100:2*pi;» y = sin(t);» plot(t,y)» grid» axis([0 2*pi -1 1])

» xlabel('0 \leq \itangle \leq \pi')

» ylabel('sin(t)')

» title('Graph of the sine function')

» text(1,-1/3,'\it{Demonstration of plotting}')

Page 25: Matlab1

25

PLOTTING MULTIPLE CURVES IN THE SAME PLOT

There are two methods for plotting two curves in one plot:

1. Using the plot command.

2. Using the hold on, hold off commands.

Page 26: Matlab1

26

USING THE PLOT COMMAND TO PLOT

MULTIPLE CURVES

The command:

plot(x,y,u,v) plots y versus x and v versus u on the same plot.

By default, the computer makes the curves in different colors.

The curves can have a specific style by using:

plot(x,y,’color_linestyle_marker’,u,v, ’color_linestyle_marker’)

More curves can be added.

Page 27: Matlab1

27

Plot symbols commands

Colors Symbols Lines

y – yellow . – point - – solid line

m – mag o – circle : – dots

c – cyan x – xmark -. – line dot

r – red + – plus - - – dashes

g – green * – star

b – blue s – square

w – white d – diamond

k – black v – triangle down ^ – triangle up

< – left

< – right

p – pentagram

h – hexagram

Page 28: Matlab1

28Ola Sbihat 28

Plot the function below on a log-log graph.

2y x>> x = logspace(-1, 1, 100);>> y = x.^2;>> loglog(x, y)A grid and additional labeling were provided and the curve is shown on the next slide.

Page 29: Matlab1

29

Page 30: Matlab1

30

x=[0:0.1:10];

y=500-0.5*9.81*x.^2;

xd=[0:10];

yd=[500 495 490 470 430 390 340 290 220 145 60];

plot(x,y,'g',xd,yd,'mo--')

xlabel('TIME (s)')

ylabel('HEIGHT (m)')

title('Height as a Function of Time')

legend('Model','Data')

axis([0 11 0 600])

text(1,100,'Comparison between theory and experiment')

EXAMPLE OF A FORMATTED PLOT WITH

TWO CURVESBelow is the script file of the falling object plot in lecture 4.

Creating a vector of time (data) xd

Calculated height y for each x

Creating a vector of time x

Creating a vector of height (data) yd

Plot y versus x in green, and

plot yd versus xd in magenta,

circle markers, and dashed line.

Page 31: Matlab1

31

A PLOT WITH TWO CURVES

Page 32: Matlab1

32

Subplots

subplot(3,2,1) subplot(3,2,2)

subplot(3,2,3)

subplot(3,2,5)

subplot(3,2,4)

subplot(3,2,6)

For example, the

command:

subplot(3,2,p)

Creates 6 plots

arranged in 3 rows

and 2 columns.

Page 33: Matlab1

33

Example:

Plot the 3-D surface described by the equation,

in the region in the x-y plane from x = -5 to 5 and

y = -4 to 4.

Step 1) solve the equation for z,

(continued on the next slide)

2 2

4cos( )*cos( )* 0x y

x y e z

2 2

4cos( )*cos( )*x y

z x y e

3-D Plotting

Page 34: Matlab1

34

Step 2) create two vectors x and y . The values of x and y will determine the region in the xy plane over which the surface is plotted.

>> x = linspace(-3,3,7);

>> y = linspace(-2,2,5);

Step 3) Use the meshgrid function to create two matrices, X and Y . We will use these to compute Z.

>> [X , Y] = meshgrid(x,y)

Page 35: Matlab1

35

3 2 1 0 1 2 3

3 2 1 0 1 2 3

3 2 1 0 1 2 3

3 2 1 0 1 2 3

3 2 1 0 1 2 3

X =

Y =2 2 2 2 2 2 2

1 1 1 1 1 1 1

0 0 0 0 0 0 0

1 1 1 1 1 1 1

2 2 2 2 2 2 2

Page 36: Matlab1

365-36

Step 4) compute Z by using the X and Y created by meshgrid,

>> R = sqrt(X.^2+Y.^2);

>> Z = cos(X).*cos(Y).*exp(-R./4)

Z =0.1673 0.0854 .1286 .2524 0.1286 0.854 0.1673

.2426 .1286 0.2050 0.4208 0.2050 .1286 .2426

.4676 .2524 0.4208 1.000 0.4208 .2524 .4676

.2426 .1286 0.2050 0.4208 0.2050 .1286 .2426

0.1673 0.0854 .1286 .2524 .1286 0.08

54 0.1673

Page 37: Matlab1

375-37

Step 4) compute Z by using the X and Y created by meshgrid,

>> R = sqrt(X.^2+Y.^2);

>> Z = cos(X).*cos(Y).*exp(-R./4);Step 5) graph in 3-D by applying the surface function, >> surf(X,Y,Z);

Page 38: Matlab1

38

Subplots

» t = 0:pi/10:2*pi;

» [X,Y,Z] = cylinder(4*cos(t));

» subplot(2,2,1); mesh(X)

» subplot(2,2,2); mesh(Y)

» subplot(2,2,3); mesh(Z)

» subplot(2,2,4); mesh(X,Y,Z)

» t = 0:pi/10:2*pi;

» [X,Y,Z] = cylinder(4*cos(t));

» subplot(2,2,1); mesh(X)

» subplot(2,2,2); mesh(Y)

» subplot(2,2,3); mesh(Z)

» subplot(2,2,4); mesh(X,Y,Z)

Page 39: Matlab1

39

Mesh & surface plots

» [X,Y] = meshgrid(-8:.5:8);

» R = sqrt(X.^2 + Y.^2) + eps;

» Z = sin(R)./R;

» mesh(X,Y,Z)

» text(15,10,'sin(r)/r')

» title('Demo of 2-D plot');

» [X,Y] = meshgrid(-8:.5:8);

» R = sqrt(X.^2 + Y.^2) + eps;

» Z = sin(R)./R;

» mesh(X,Y,Z)

» text(15,10,'sin(r)/r')

» title('Demo of 2-D plot');

Page 40: Matlab1

40

MATLAB Graphics - Subplots

Matlab official method: generate encapsulated postscript files -» print -depsc2 mesh.eps

My method:- Use <PrintScreen> key (top right corner) – or any other screen capture utility

- to capture the plot on screen Use MS Photo Editor or similar bit-map editing program to cut out the the plot

that I want Paste it into MS Word or MS PowerPoint or save it as .BMP/.GIF file Resize as necessary Fit as many as required on page Type written description (or report) if needed Print document to any printer (not necessarily postscript printer)

Page 41: Matlab1

41

MATLAB Environment (1)

Managing Commands and Functions

addpath Add directories to MATLAB's search path

help Online help for MATLAB functions and M-files

path Control MATLAB's directory search path

Managing Variables and the Workspace

clear Remove items from memory

length Length of vector

load Retrieve variables from disk

save Save workspace variables on disk

size Array dimensions

who, whos List directory of variables in memory