Basics of Programming

Post on 13-May-2017

213 views 0 download

Transcript of Basics of Programming

S YADAV1

SESSION-1

INTRODUCTION TO PROGRAMMING IN MATLAB

LANGUAGE

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

S YADAV3

Programming in Matlab

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.

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.

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

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.

S YADAV8

MATLAB AND MATRIX

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

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

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

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

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

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

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.

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

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

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]

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]

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

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 …..

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…..

S YADAV23

CONTROL STRUCTURES IN MATLAB

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

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];

S YADAV26

Control statement

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

S YADAV27

IF

price=4500;

if price >5000,

disp('PRICE IS MORE THAN 5000');

end

S YADAV28

IF ELSE

price=4500;

if price >5000,

disp('PRICE IS MORE THAN 5000');

else

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

end

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

S YADAV30

WHILE LOOPvar=20;

while var>0,

disp(var);

var=var-1;

end

disp('variable is zero now');

disp(var);

S YADAV31

FOR LOOP

for i=1:10,

disp(i);

end

for i=1:2:11,

disp(i)

end

S YADAV32

Nested For Loop

n=3;

for i=1:n,

for j=1:n,

a(i,j)=5;

end

end

disp(a);

S YADAV33

SWITCH CASEvar1=10;

var2=5;

switch operation

case 'add'

output=var1+var2;

disp(output);

case {'multiply','product'}

output=var1*var2;

disp(output);

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

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

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);

S YADAV37

FUNCTION IN MATLAB

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

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

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

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].

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;

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

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

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);

S YADAV46

Thank you