Basics of Programming

46
S YADAV 1 SESSION-1 INTRODUCTION TO PROGRAMMING IN MATLAB LANGUAGE

Transcript of Basics of Programming

Page 1: Basics of Programming

S YADAV1

SESSION-1

INTRODUCTION TO PROGRAMMING IN MATLAB

LANGUAGE

Page 2: Basics of Programming

S YADAV2

Programming Basics To Start Matlab On Microsoft® Windows® platforms, double-clicking the MATLAB shortcut on your Windows desktop.

On UNIX platforms, start MATLAB by typing matlab at the operating system prompt.

Quitting the MATLAB Program To end your MATLAB session, select File > Exit MATLAB in the

desktop, or type quit in the Command Window  

Matlab.ico

Page 3: Basics of Programming

S YADAV3

Programming in Matlab

Page 4: Basics of Programming

S YADAV4

Basics of Matlab Matlab has two different methods for executing commands   Interactive mode In interactive mode, commands are typed (or cut-and-pasted) into the

'command window'. » 3 + 4 ans = 7

Batch mode.     In batch mode, a series of commands are saved in a text file (either

using Matlab's built-in editor, or another text editor ) with a '.m' extension. 

The batch commands in a file are then executed by typing the name of the file at the Matlab command prompt.

Page 5: Basics of Programming

S YADAV5

Scripts and Functions M-Files: Files that contain code in the MATLAB language are

called M-files. You create M-files using a text editor, then use them as you would any other MATLAB function or command.

There are two kinds of M-files: 1. Scripts, which do not accept input arguments or

return output arguments. They operate on data in the workspace.

2. Functions, which can accept input arguments and return output arguments. Internal variables are local to the function.

NOTE :The names of the M-file and of the function should be the same.

Page 6: Basics of Programming

S YADAV6

Scripts x = -pi:0.01:pi; plot(x,sin(x)), grid on

Function %Name of function is sum1 function c=sum1(a,b) c=a+b end M file names should be sum1.m

Example

Page 7: Basics of Programming

S YADAV7

Variables As in programming languages, the MATLAB language provides

mathematical expressions, but unlike most programming languages, these expressions involve entire matrices.

MATLAB does not require any type declarations or dimension statements. When MATLAB encounters a new variable name, it automatically creates the variable and allocates the appropriate amount of storage. If the variable already exists, MATLAB changes its contents and, if necessary, allocates new storage. For example,

num_students = 25 creates a 1-by-1 matrix named num_students and stores the value 25 in its single element.

To view the matrix assigned to any variable, simply enter the variable name.

Variable names consist of a letter, followed by any number of letters, digits, or underscores.(max length of variable is 63)

MATLAB is case sensitive; it distinguishes between uppercase and lowercase letters. B and b are not the same variable.

Page 8: Basics of Programming

S YADAV8

MATLAB AND MATRIX

Page 9: Basics of Programming

S YADAV9

*MATLAB IS MATRIX MANIPULATION LANGUAGE.

*MOST OF VARIABLES YOU DECLARE WILL BE MATRICES.

*MATRIX IS RECTANGULAR ARRAY OF NUMBERS

*A is MxN MATRIX : IT MEANS ‘A’ HAS M ROWS AND N COLUMNS

*IN MATRIX FIRST INDEX IS ROW INDEX AND SECOND INDEX IS COLUMN INDEX

*SCALAR IS 1x1 MATRIX.

*INDEXING IN MATLAB STARTS FROM ONE(1)

MATRIX

Page 10: Basics of Programming

S YADAV10

Let matrix

B =

1 2 3

6 7 8

B CAN BE CREATE IN MATLAB USING SYNTAX

B=[1 2 3;6 7 8];

HOW TO ACCESS DIFFERENT ELEMENTS B(ROW ,COLUMN)

B(1,1)=1 i.e. FIRST ROW and FIRST COLUMN

B(2,1)=6 i.e. SECOND ROW FIRST COLUMN

B(2,3)=8 i.e. SECOND ROW THIRD COLUMN

DEFINING MATRIX IN MATLAB

Page 11: Basics of Programming

S YADAV11

A =

11 12 13 14 15 16

17 18 19 20 21 22

23 24 25 26 27 28

A(1,:) = [11 12 13 14 15 16]

i.e. FIRST ROW AND ALL COLUMNS

A(2,:)=[17 18 19 20 21 22]

i.e. SECOND ROW AND ALL COLUMNS

A(1,1:3)=[11 12 13 ];

i.e. FIRST ROW AND ONE TO THREE COLUMNS

A(2,3:6)=[19 20 21 22 ]; i.e second row , third to sixth column.

ACCESSING SUBMATRICES

Page 12: Basics of Programming

S YADAV12

ONE DIMENTION MATRIX IS ALSO KNOWN AS VECTOR.

ONE DIMENTION MATRIX MAY BE EITHER

ROW MATRIX : CONTAINING ONE ROW ONLY

OR

COLUMN MATRIX:CONTAINING ONE COLUMN ONLY

HOW TO ACCES DIFFERENT ELEMENTS

A(1),A(2) WILL WORK AS IT IS ONE DIMENSIONAL VECTOR.

ONE DIMENTION MATRIX

Page 13: Basics of Programming

S YADAV13

ALTERNATE WAY OF MAKING MATRICES

A=1:9

A =

1 2 3 4 5 6 7 8 9

A=1:2:9

A =

1 3 5 7 9

A=[5:-1:-5]

A =

5 4 3 2 1 0 -1 -2 -3 -4 -5

Page 14: Basics of Programming

S YADAV14

eyes(n) will produce nxn identity matrixeyes(m,n) will produce mxn identity matrixones(n) will produce nxn matrix of ones.ones(m,n) will produce mxn matrix of ones.zeros(m,n) will produce matrix of zerosrand(m,n) will produce mxn matrix of randomvaluetriu(X) will extract upper triangular part of matrix X.tril(X) will extract lower triangular part of matrix X.

MATRIX BUILDING FUNCTIONS

Page 15: Basics of Programming

S YADAV15

MATRIX OPERATIONS

+ ADDITION - SUBTRACTION* MULTIPLICATION^ POWER‘ CONJUGATE TRANSPOSE.’ TRANSPOSE\ LEFT DIVISION/ RIGHT DIVISION

THESE MATRIX OPERATIONS APPLY TO SCALARS AS WELL.IF THE SIZES OF MATRICES ARE INCOMPATIBLE FOR THE MATRIX OPERATION, AN ERROR MESSAGE WILL RESULT.

Page 16: Basics of Programming

S YADAV16

EXAMPLE OF MULTIPLICATIONA = B =

1 2 1 1

2 3 1 1

A*B

1*1+2*1 1*1+2*1

2*1+3*1 2*1+3*1

A*B

3 3

5 5

Page 17: Basics of Programming

S YADAV17

ENTRY-WISE OPERATIONS•OPERATIONS OF ADDITION AND SUBTRACTION ALREADY OPERATE ENTRY WISE A = B =

1 2 1 1 2 1 1 1

A+B

2 3 3 2

Page 18: Basics of Programming

S YADAV18

Other entry-wise operation

i.e. .* , .^ , ./ ,.\A=[1 2 3 4]

B=[1 2 3 4]

A.*B=[1 4 9 16]

A=[4 6 8 10]

B=[2 2 2 2]

A./B=[2 3 4 5]

A=[1 2 3]

A.^3=[1 8 27]

Page 19: Basics of Programming

S YADAV19

MATRIX DIVISIONIF A IS AN INVERTIBLE MATRIX AND b IS A COMPATIBLE COLUMN VECTOR, then

x=A\b is the solution of A*x=b

[1 2 3;4 5 6; 8 9 7]*[x;y;z]=[1;2;3]

[x;y;z]=[1 2 3;4 5 6;8 9 7]\[1;2;3]

IF A IS AN INVERTIBLE MATRIX AND b IS A COMPATIBLE ROW VECTOR, then

x=b/A is the solution of x*A=b

[x y z]*[1 2 3;4 5 6; 8 9 7]=[1 1 3]

[x y z]=[1 1 3]/[1 2 3;4 5 6;8 9 7]

Page 20: Basics of Programming

S YADAV20

STATEMENTS, EXPRESIONS AND VARIABLES

•MATLAB is interpreted language.•Statements are of form variable=expression; expression; x=3;y=x^3+3*x;y=sqrt(x);

Or just x^3+2*x ; In this case variable ‘ans’ is automatically created to which result is assigned

Page 21: Basics of Programming

S YADAV21

•Statement is terminated with ‘;’•If it is not terminated with ‘;’ , result will be displayed on screen.•Statements can be placed on same line if they are terminated with ‘;’•Single statement can be continued to next line with three or more periods e.g. y=x*x+ ….. 2*x+3;

•MATLAB is case sensitive.•who or whos will list variables in current workspace.•inmem lists compiled m files in current memory.

Continued …..

Page 22: Basics of Programming

S YADAV22

•VARIABLE OR FUNCTION CAN BE CLEARED FROM WORKSPACE clear variablename clear functionname•clear WILL CLEAR ALL NON PERMANENT VARIABLES.•ON LOGOUT ALL VARIABLES ARE LOST•‘save’ WILL SAVE ALL VARIABLES IN FILE matlab.mat•‘load’ WILL RESTORE WORKSPACE TO ITS FORMAL STATE.•‘save’ and ‘load’ TAKE VARIABLE NAME AND FILENAME AS OPTIONAL ARGUMENTS.•edit fun opens the file fun.m in a text editor.

Continued…..

Page 23: Basics of Programming

S YADAV23

CONTROL STRUCTURES IN MATLAB

Page 24: Basics of Programming

S YADAV24

RELATIONAL OPERATORS< LESS THAN> GREATER THAN<= LESS THAN OR EQUAL>= GREATER THAN OR EQUAL= = EQUAL~= NOT EQUALNOTE: = IS USED IN ASSIGNMENT AND = = IS USED IN A RELATION

LOGICAL OPERATORS& AND| OR~ NOTRELATIONS MAY BE CONNECTED BY LOGICAL OPERATORS

Page 25: Basics of Programming

S YADAV25

OUTPUT OF RELATIONS OPRATION

WHEN APPLIED TO SCALAR, RELATION IS ZERO OR ONE DEPENDING ON WHETHER THE RELATION IS TRUE OR FALSEa=3; b=2;c= ( a>b) ; It means c=1c=(a<b); It means c=0a= = b answer is 0a~=b answer is 1

AND WHEN APPLIED TO MATRICES OF SAME SIZE, RELATION IS MATRIX OF 0’s and 1’s GIVING VALUE OF RELATION BETWEEN CORROSPONDING ENTERIES.d=[1 2]; e=[1 1];f= (d= =e); It means f=[1 0];

Page 26: Basics of Programming

S YADAV26

Control statement

If ,if else For loop While loop Switch case Brake ,continue etc.

Page 27: Basics of Programming

S YADAV27

IF

price=4500;

if price >5000,

disp('PRICE IS MORE THAN 5000');

end

Page 28: Basics of Programming

S YADAV28

IF ELSE

price=4500;

if price >5000,

disp('PRICE IS MORE THAN 5000');

else

disp(‘PRICE IS NOT MORE THAN 5000’);

end

Page 29: Basics of Programming

S YADAV29

IF ELSEIFprice=4500;

if price >5000,

disp('PRICE IS MORE THAN 5000');

elseif (1000<=price)&(price <=5000),

disp('PRICE IS BETWEEN 1000 AND 5000');

else

disp('PRICE IS LESS THAN 1000');

end

Page 30: Basics of Programming

S YADAV30

WHILE LOOPvar=20;

while var>0,

disp(var);

var=var-1;

end

disp('variable is zero now');

disp(var);

Page 31: Basics of Programming

S YADAV31

FOR LOOP

for i=1:10,

disp(i);

end

for i=1:2:11,

disp(i)

end

Page 32: Basics of Programming

S YADAV32

Nested For Loop

n=3;

for i=1:n,

for j=1:n,

a(i,j)=5;

end

end

disp(a);

Page 33: Basics of Programming

S YADAV33

SWITCH CASEvar1=10;

var2=5;

switch operation

case 'add'

output=var1+var2;

disp(output);

case {'multiply','product'}

output=var1*var2;

disp(output);

Page 34: Basics of Programming

S YADAV34

CONTINUED ……….case {'subtract','sub'}

output=var1-var2;

disp(output);

case 'divide'

output=var1/var2;

disp(output);

otherwise

disp('What else you want?');

end

Page 35: Basics of Programming

S YADAV35

CONTINUED…….case {'subtract','sub'}

output=var1-var2;

disp(output);

case 'divide'

output=var1/var2;

disp(output);

otherwise

disp('What else you want?');

end

Page 36: Basics of Programming

S YADAV36

BREAK STATEMENTvar=20;

while var>0,

disp(var);

if var==10

break;

end

var=var-1;

end

str=sprintf('Now variable is %d',var);

disp(str);

Page 37: Basics of Programming

S YADAV37

FUNCTION IN MATLAB

Page 38: Basics of Programming

S YADAV38

SCALAR FUNCTIONS•Operate essentially on scalars.•Operate element-wise when applied to a matrix. sin asin expabs cos acoslog10 log (natural log) sqrtfloor tan atan rem (remainder) sign round A=sin(1)A = 0.8415A=sin([1 1.2 1.3 1.4])A = 0.8415 0.9320 0.9636 0.9854

Page 39: Basics of Programming

S YADAV39

VECTOR FUNCTIONS•OPERATE ESSENTIALY ON VECTOR (ROW OR COLUMN)•WHEN APPLIED TO MxN MATRIX, OPERATE COLUMN BY COLUMN TO PRODUCE ROW VECTOR CONTAINING RESULT OF APPLICATION TO EACH COLUMN.max sum median any min prod mean all sort std max([1 2 3])ans = 3max([1 2 3 5 8 9 7 6 2])ans = 7 8 9

Page 40: Basics of Programming

S YADAV40

MATRIX FUNCTIONS

eig eigenvalues and eigenvectors chol cholesky factorization svd singular value decomposition inv inverse lu LU factorization qr QR factorization rref reduced row echelon form expm matrix exponential

Page 41: Basics of Programming

S YADAV41

STRING FUNCTIONSstrcmp(str1,str2)strncmp(str1,str2,n)strcat(str1,str2)str2num(str)str2double(str)num2str(num)CAT(DIM,A,B) concatenates the arrays A and B along the dimension DIM. CAT(2,A,B) is the same as [A,B]. CAT(1,A,B) is the same as [A;B].

Page 42: Basics of Programming

S YADAV42

WRITING FUNCTION

function [sum,diff]= addsub(a,b)

%This function returns two outputs, sum %and difference

sum=a+b;

diff=a-b;

return;

Page 43: Basics of Programming

S YADAV43

FUNCTION CONTINUEDfunction result=perform(operation ,var1,var2)switch operationcase 'multiply' result=var1*var2;case 'add' result=var1+var2;case 'subtract' result=var1-var2;case 'divide' result=var1/var2;otherwise disp('Only multilply, add,subtract and divide operations are allowed'); result='error';end

Page 44: Basics of Programming

S YADAV44

INPUTname=input('Please enter your name : ','s');

fprintf('\nHello %s !\n',name);

account=input(' Please enter your account number : ');

if (25 <account)&(account<50)

disp('Welcome');

else

disp('You are not a valid user');

end

Page 45: Basics of Programming

S YADAV45

FORMATED OUTPUT

name=‘svits';

age=06;

salary=1800000;

fprintf('\n Institute Name : %s\t Age : %d ….

\t Salary : Rs %0.2f',name,age,salary);

fprintf('\n I am writing 123456 in exponential ….

form : %e',12356);

a=[1.2 1.3 1.4 1.5 1.6];

fprintf('\n %f ',a);

Page 46: Basics of Programming

S YADAV46

Thank you