Basics of Programming
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