matlab introduction

Post on 17-Jan-2016

9 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Matlab Introduction

TRANSCRIPT

   

Matlab

   

Overview

Matlab is a SW designed for the numerical calculation on scientific and engineering applications.

Web site http://www.mathworks.com/

The main Matlab functions are the following:

1) Plot 2D and 3D ; 2) Linear Algebra ; 3) Interpolation and approximation ; 4) ODE and PDE solution ;

   

How to run matlab on linux OS?

To run matlab in your linux/unix OS we have follow these steps:

1) Open a new terminal

2) type cd /home/Matlab_folder 3) type ./bin/matlab

After these 3 steps we should have a screenshot like the

following

   

Matlab Prompt

   

Help

To obtain information about Matlab commands select “help” in the main

menu as in the following screenshot:

   

Help

On search area you can enter the command that we need information and get syntax, parameters, input and / or output etc.. etc..

For example, writing the command '"plot" you will get information on that command. In particular, on the left column will be all the items of the manual where there is information about "plot", clicking on one of these items you will get the information about the selected item and the right column .

   

Help Matlab example

   

Variables

In general on Matlab we can define variables, functions and programs. The generic variable will be defined as follows: → variable_name = instruction ; where the output of the instruction is assigned to “ variable_name ”; Each variable must be identified with an alphanumeric string that can not start with a number and can not contain special characters (eg: var01 is a valid name 01 * var is not a invalid name). You have to pay attention to the fact that the variable name is case sensitive so you do not confuse the uppercase and lowercase.

   

Variables

On Matlab should not be defined the type and the size of the variable before use it (opposite in C, C++, Fortran);

To view and edit a variable is available in the graphical user interface the “Workspace”;

Each variable is added to the “Workspace” after the definition;

Each variable can be deleted from the workspace with the command “--> clear variable_name”;

The command "clear all" allows to delete all the variables created by a single user, however, it strongly discouraged the use of this command inside a script (with the exception of line 1) because it can destroy all the defined variables .

   

Variables and workspace

   

Variables examples

Example: Create a variable named "var" and assign it the value 2. Check the result using the “Workspace”.

Commands : → var=2; We create the variable and we assign it the value 2

The variable “var” will appear on the “Workspace” in the list of variables.

   

Variables examples

   

Format

In Matlab, we can choose the format in which numbers represent the variables values using the command "format". To use this command we must be respected the following syntax: → format type ; → format; Where:

format by itself specifies the default display type, format short (that is, 5-digit scaled, fixed-point values).

format type changes the format to the specified type.

   

Format

short (default) Scaled fixed-point format, with 4 digits after the decimal point. For example, 3.1416.

long Scaled fixed-point format with 15 digits after the decimal point for double; and 7 digits after the decimal point for single. For example, 3.141592653589793.

shortE Floating-point format, with 4 digits after the decimal point. For example, 3.1416e+000.

longE Floating-point format, with 15 digits after the decimal point for double; and 7 digits after the decimal point for single. For example, 3.141592653589793e+000.

For more information check Matlab Help

   

Costants

In Matlab, there are some constants that are always available in the workspace. To call these constants we must follow the following syntax: → costant_name Some constants available on Matlab are the following: 1) pi = 3.1415927... Costant π 2) i Imaginary unit 3) eps Floating-point relative accuracy

(releted to the machine used)

4) inf Infinity 5) nan NotANumber

   

Matrices and arrays

To define a matrix/array in Matlab we must follow the following syntax:

→ A=[a b c; d e f ; g h i ] Through this command we will get a 3x3 matrix where rows will be (a, b, c), (d, e, f) and (g,h,i). In general, to write an array/matrix we should follow the following rules :

1) The elements of a same row are separated by a comma or a space;

2) Each row, except the last, must end with a semicolon;

3) The array elements must be enclosed in “ [ ] ”;

4) Pay attention to the size of rows and columns pointing out that the insertion is done by rows.

   

Matrices and arrays

Example: Define the matrix A in Matlab and extract the element a11, the second row and the third column

A=[1 6 915 22 6617 4 1 ]

   

Matrices and arrays

To define the array we will use the following instructions:

A=[1 6 9; 15 22 66 ; 17 4 1]

A(1)

A(2,:)

A(:,3)

The results are as follows.

   

Matrices and arrays

   

Matrices and arrays

An array of size "n" can be seen as a matrix composed of a single row, then to define an array we can follow this syntax:

→ a=[a,b,c,d,e,.........,n];

In Matlab there are some commands that allow the insertion of special matrices such as: 1) eye(n,n) ; Identity Matrix nxn 2) zeros(n,m); Matrix nxm all elements equal to zero 3) ones(n,m); Matrix nxm all elements equal to one. 4) triu(X,k); Upper triangular part of matrix part of matrix X k = 0 is the main diagonal, k > 0 is above the main diagonal, and k < 0 is below the main diagonal 5) tril(X,k); Lower triangular part of matrix X

   

Matrices and arrays

To get the elements of a matrix we must use the following instructions: → A=[ a,b,c ; d,e,f ; g,h,i ]; Generic matrix 3x3 → b=A(i,j); The variable b will be equal to aij

In general it may be necessary get a row, a column or a part of them, in this case we will have to use the symbol “ : “ as follow: → A(: ,1); We get the first column of the matrix A → A(1, :); We get the first row of the matrix A → A(1: 2,1); We get the column array containing the first two elements of the first column of the matrix A

   

Matrices and arrays

A useful command is the command "diag ()" it means you get a column array containing the elements of the main diagonal of a square matrix. Through this command you can build a square diagonal matrix following the instructions: → b=[a,b,c]; → C=diag(b); C will be a 3x3 diagonal matrix where the elements of the main diagonal are the elements of the array b

To perform the inverse of a square matrix we can use the command “ inv( A )” , whereas to get the transposed matrix we can use the command “A' “.

   

Matrices and arrays

The sum of two matrices of the same size can be obtained through the following statement: → A+B;

The product of two matrices of appropriate dimensions, is obtained by the following statement:

→ A*B;

The exponential of a matrix A is obtained by the following statement:

→ expm( A ) ;

This statement must not be confused with exp (A) which perform the exponential of the individual elements of the matrix.

   

Matrices and arrays

The determinant of a matrix A is obtained using the following command: → det(A);

The rank of a matrix A can be calculated using the following command: → rank(A);

Given two matrices A and B may be necessary to carry out the multiplication (or division) 'element by element' in this context we must use the commands ' .* ' , ' ./ ' e ' .^ ' (The last command performs an element-by-element esponential).

   

Matrices and arrays

Example: define the matrix B in matlab and calculate:

1) Determinant;

2) Rank;

3) Exponential matrix;

4) Esponential element-by- element;

5) Then extract the first row and the second column.

B=[1 0 00 4 00 0 6 ]

   

Matrices and arrays

We will use the following commands:

d=[1,4,6]

B=diag(d)

det(B)

rank(B)

expm(B)

exp(B)

B(1,:)

B(:,2)

Note that expm (B) and exp (B) do not provide in general the same results.

   

Matrices and arrays

The instruction expm(A) will perform the calculation of the following series :

In the case of diagonal matrices the series is equal to the following matrix:

e A=∑k=0

Ak

k !

expm A=e A=[ea11 0 00 ea22 00 0 ea33]

   

Matrices and arrays

The instruction exp(A) performs the exponential “element-by-element” on the matrix A, for a diagonal matrix we obtain this result:

exp A=[ea11 e0 e0

e0 ea22 e0

e0 e0 ea33 ]=[ea11 1 11 ea22 11 1 ea33]

   

Matrices and arrays

   

Matrices and arrays

The use of the command inv(A) can be dangerous when the matrix has determinant close to zero. Below we report an example:

Using the command det(A) we get:

>>det(A)= 6.6613e-16

we can observe as det(A) is close to zero then the command inv(A) could provide bad results.

A=[1 2 34 5 67 8 9]

   

Matrices and arrays

Exercize: define the matrix A and calculate the product A*inv(A).

We will get in this case after using the command B = inv (A) the following results for the product A * B (theoretically equal to the identity matrix I):

This result is completely differenty from the theoretical so we have to be very careful when we use the command inv (A)

A∗B=[0,25 1 −0,25−2 4 −1

−4,25 7 −1,75 ]

   

Polynomial

The command "poly" is used to define a polynomial from its roots. : Assuming that "a" and "b" are the roots of a generic second-order polynomial, using the "poly" you will get the corresponding polynomial →polynomial_name= poly( [a b]);

To calculate the roots of a polynomial, we can use the following command: → roots( polynomial_name );

   

Mathematical Functions

round(x) Round to nearest integer. Positive elements with a fractional part of 0.5 round up to the nearest positive integer. Negative elements with a fractional part of -0.5 round down to the nearest negative integer. For complex X, the imaginary and real parts are rounded independently.

fix(x) Rounds the elements of x toward zero, resulting in an array of integers. For complex x, the imaginary and real parts are rounded independently.

floor(x) Rounds the elements of x to the nearest integers less than or equal to x. For complex x, the imaginary and real parts are rounded independently.

ceil(x) Rounds the elements of A to the nearest integers greater than or equal to A. For complex A, the imaginary and real parts are rounded independently.

sign(x) Returns an array Y the same size as X, where each element of Y is:

1 if the corresponding element of X is greater than zero 0 if the corresponding element of X equals zero -1 if the corresponding element of X is less than zero

   

Matematical Functions

x=[-1.8 -0.1 3.4 5.6 7.0]

round(x) >> ans = -2 0 3 6 7

fix(x) >> ans = -1 0 3 5 7

floor(x) >> ans = -2 -1 3 5 7

ceil(x) >> ans = -1 0 4 6 7

   

Mathematical Functions

abs(x) returns an array Y such that each element of Y is the absolute value of the corresponding element of X.

sqrt(x) square root of x

exp(x) exponential function

log(x) (or log10(x) logaritm in base e , 10 and 2 or log2(x))

   

Matehmatical Functions

sin(x) Sine of argument in radians

cos(x) Cosine of argument in radians

tan(x) Tangent of argument in radians

cot(x) Cotangent of argument in radians

asin(x) Inverse sine; result in radians

acos(x) Inverse cosine; result in radians

atan(x) Inverse tangent; result in radians

acot(x) Inverse cotangent; result in radians

sinh(x) Hyperbolic sine of argument in radians

cosh(x) Hyperbolic cosine of argument in radians

tanh(x) Hyperbolic tangent of argument in radians

   

For and While

In Matlab, we can define cycles For and While using the following instructions: → for variable=values → statements 1; → ....................; Sintax for instruction → statements n; → end → while expression → comando 1; → ..................; Sintax while instruction → comando n; → end

   

If-Elseif-Else

The syntax for the instruction If-Elseif-Else is:

→ if expression 1 → statemen 1; → ..................; → statement n; → elseif expression 2 Sintax If-Elseif-Else instruction → statement a; → ..................; → statement z; → else → statement xa; → ...................; → statement xz; → end; You can also use nested instructions If-Elseif-Else.

   

Case

The syntax for the instruction Case is the following:

→ switch switch_expression → case case_expression → statement 1; → ................. ; → statement n; → case case_expression Sintax Case instruction → statement a; → ..................; → statement z; → otherwise → statement; → end

   

Plot 2D and 3D

In Matlab to plot graphs must first open a graphics window, this is done using the following command: → figure(num); where the string 'num' is the number of the graphics window to be opened and must be a natural number.

To clean the graphics window in use we must use the following command: → clf(num);

   

Plot 2D and 3D

   

Plot 2D and 3D

To draw a 2D graph we can use the command 'plot', an example of the use of this command is: → figure(1); → x=-1:0.1:1; → y=exp(x); → plot(x,y,'r'); grid → title(' Exponential function'); → xlabel('x'); → ylabel('y=exp(x)');

In particular, with these instructions we will get the graph of the exponential function for x values between -1 and 1. The parameter 'r' allows as to choose the color of the graph of the function (in this case red), whereas the command 'grid' draws a grid on the graph. Finally, the command 'title', 'xlabel' and 'ylabel' allows us to put a title for the graph and labels on x and y axes.

   

Plot 2D and 3D

   

Plot 2D and 3D

To choice the graphics colors we can follow the following table: k Black b Blu g Green r Red c Cyan m Magenta w White y Yellow Be careful avoid the use of white to draw a white line on a white background ( invisible)

   

Plot 2D and 3D

Line Style Specifiers :

'-' Solid line (default) '–' Dashed line

':' Dotted line '-.' Dash-dot line

'none' No line

Marker Specifiers :

'+' Plus sign 'o' Circle

'^' Upward-pointing triangle '.' Point

'x' Cross '*' Asterisk (not Asterix)

(see matlab Help for more informations)

   

Plot 2D and 3D

plot(x,y,':*g'); grid

   

Plot 2D and 3D

Syntax to plot more functions in the same graph:

plot(x1,y1,'r*', x2,y2,'b-',........,xn,yn,'y');

Exercize: plot in the same graph the functions y=3*sin(pi*x) and y=exp(-0.5*x) with x in [0,5]. Complete the graph with title, axes labels and grid.

clear all;

x=0:0.1:5;

y=3*sin(pi*x);

plot(x,y,'r'), xlable('x'), ylabel('y');grid

hold on

y1=exp(-0.5*x);

plot(x,y1,'g');

gtext('x1'); gtext('x2');gtext('x3'); gtext('x4');gtext('x5');gtext('x6'); Mouse placement of text in 2-D view

title('intersection graph functions y=3*sin(pi*x) and y1=exp(-0.5*x) ');

hold off

   

Plot 2D and 3D

   

Plot 2D and 3D

ezplot(fun) plots the expression fun(x,y) over the default domain -2π < x < 2π , -2π < y < 2π where fun(x,y) is an implicit function.

Example:

clear all

clc

figure(1)

ezplot('x.^2-y.^4-1',[-4 4 -4 4]); grid

figure(2)

ezplot('cos(t)','sin(t)'); grid

   

Plot 2D and 3D

   

Plot 2D and 3D

   

Plot 2D and 3D

subplot(m,n,p) divides the current figure into rectangular panes that are numbered rowwise. Where m number of rows ,n number of columns ,p position inside the matrix.

Example: plot in the same figure but in different panes the functions:

y=x, y=x^2, y=sin(x), y=exp(x), y=log(x) and y=cos(x).

x=0.1:0.1:2;

subplot(2,3,1) , plot(x,x,'r');grid

title('y=x');xlabel('x'); ylabel('y');

subplot(2,3,2), plot(x, x.^2,'b');grid

title('y=x^2');xlabel('x'); ylabel('y');

subplot(2,3,3), plot(x,sin(x),'y');grid

title('y=sin(x)');xlabel('x'); ylabel('y');

subplot(2,3,4), plot(x,exp(x),'m');grid

title('y=exp(x)');xlabel('x'); ylabel('y');

subplot(2,3,5), plot(x,log(x),'g');grid

title('y=log(x)');xlabel('x'); ylabel('y');

subplot(2,3,6), plot(x,cos(x),'c');grid

title('y=cos(x)');xlabel('x'); ylabel('y');

   

Plot 2D and 3D

   

Plot 2D and 3D

To draw 3D graphs we can use the command 'surf' as follow:

→ figure(1); → x=-1:0.1:1; → y=x; → [X Y]=meshgrid(x,y); → Z=sin(X.^2+Y.^2); → surf(x,y,Z); grid → title(' Funzione Z=sin(X^2+Y^2)'); → xlabel(); → ylabel(); → colorbar;

In particular, the command 'meshgrid' calculates all the possible combinations for the values of the arrays x and y to evaluate the function Z. The command 'surf' deaws the graph for function Z giving different colors to the chart depending on the value of the function.

   

Plot 2D and 3D

   

Plot 2D and 3D

Exercize 1: plot the function

y=exp(x)*sin(x) x=-1:0.1:1

blu line, ':' and marker 'o' title axes and general title;

Exercize 2: plot the function

Z=(X^2+Y^2)*exp(X)

x=y=-1:0.1:1

with colorbar, asex labels and title

   

Functions and Scripts

In Matlab we can write functions and scripts. SCRIPT : To make a script we can use any editor and we have to save the file with an extension of type '.m'. However, there is on Matlab an editor that can be activated by clicking the 'EDITOR' (notepad with pencil at the top left). To run a script you would type the following statement: → file_name.m ;

A script can also be performed using ' Run under Debug menu ' on Matlab Editor.

   

Functions and Scripts

   

Functions and Scripts

FUNCTION: To create a function in Matlab, we can use a procedure similar to that used in the script. The function must also follow the following structure: function[out1,........,outn]=function_name(input 1,.....,input n)

statement 1; ............... ; statement n;

endfunction

   

Exercize Script

Exercize: write a script in Matlab to plot the graph of the function z=y+exp(x) wher x = y are in the interval [-2, 2].

Complete the graph with title, axes labels and grid.

   

Exercize Script

After opening the matlab editor will insert the following instructions:

clear all;

clc;

x=-2:0.1:2;

y=x;

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

Z=X+exp(Y);

figure(1)

surf(X,Y,Z); xgrid

title(' Z=X+exp(Y)');

xlabel('x');

ylabel('y');

Select “File”after “Save as” and insert “graf3.m” and “Save”.

   

Exercize Script

   

Exercize Script

Select Debug → Run from Matlab editor and wait results.

   

Exercize Script

Exercise: Write a Matlab script to calculate:

1) roots for the function y=x^2+3x-2.

2) plot the graph of the function y=x^2+3x-2 taking care to be able to view the points of intersection with the x-axis.

Complete the graph with title, axes labels and grid.

   

Exercize Script

clear all;

clc;

coef=[1,3,-2];

roots(coef)

x=-5:0.1:5;

y=x^2+3*x-2;

figure(1);

plot(x,y,'r');grid

title('Function y=x^2+3*x-2');

xlabel('x');

ylabel('y');

   

Esempi script Roots x1= 0,5615528 x2= -3,5615528

   

Exercize Function

Exercise: Write a Matlab function able to calcuate the sum of the elements of an array and save it as sum_d.m. Then write a script test_sum.m able to evaluate the correct operation of the function sum_d.m and do the sum of the array elements for:

x=[1,3, 4,8, 2]

   

Eexrcize Function file sum.m

function [total]=sum_d(x)

[n]=size(x);

total=0;

for i=1:n(2)

total=total+x(i);

end

end

   

Exercize Function file sum_test.m

clear all;

clc;

x=[1,3,4,8,2];

total=sum_d(x)

And the result will be:

>>total=18

When you use the functions pay attention to the current folder !!!

top related