This document provides an overview of MATLAB including its history, applications, development environment, built-in functions, and toolboxes. MATLAB stands for Matrix Laboratory and was originally developed in the 1970s at the University of New Mexico to provide an interactive environment for matrix computations. It has since grown to be a comprehensive programming language and environment used widely in technical computing across many domains including engineering, science, and finance. The key components of MATLAB are its development environment, mathematical function library, programming language, graphics capabilities, and application programming interface. It also includes a variety of toolboxes that provide domain-specific functionality in areas like signal processing, neural networks, and optimization.
o MATLAB Application& usage
o MATLAB Environment
o MATLAB Variables
o MATLAB Operations.
o MATLAB Built-in Fun.
o MATLAB Scripts.
5.
MATLAB stands formatrix laboratory.
o High-performance language for
technical computing.
o Integrates computation,
visualization, and programming in
an easy-to-use environment where
problems and solutions are
expressed in familiar mathematical
notation.
6.
o Math andcomputation
o Algorithm development
o Data acquisition
o Modeling, simulation, and prototyping
o Data analysis, exploration, and visualization
o Scientific and engineering graphics
o Application development, including
graphical user interface building
The MATLAB Application:
7.
The MATLAB systemhave five main parts:
1. Development Environment.
2. The MATLAB Mathematical Function Library.
3. The MATLAB Language.
4. Graphics.
5. The MATLAB Application Program Interface (API).
Code Generation
Blocksets
PC-based real-time
systems
StateflowStateflowStateflow
Toolboxes
DAQ cards
Instruments
Databases and files
Financial Datafeeds
Desktop Applications
Automated Reports
8.
StatisticsStatistics Toolbox
o Containsabout 250 functions and GUI’s for:
generating random numbers, probability
distributions, hypothesis Testing, statistical
plots and covers basic statistical functionality
Signal Processing Toolbox
o An environment for signal analysis
waveform generation, statistical signal
processing, and spectral analysis
o Useful for designing filters in conjunction with
the image
processing toolbox
Signal Processing
9.
Neural Network Toolbox
oGUI for creating, training, and simulating
neural networks.
o It has support for the most commonly used
supervised
Optimization Toolbox
o Includes standard algorithms for optimization
o Including minimax, goal attainment, and semi-
infinite minimization problems
Neural Networks
Optimization
10.
Curve Fitting Toolbox
oAllows you to develop custom linear and
nonlinear models in a graphical user interface.
o Calculates fits, residuals, confidence intervals,
first derivative and integral of the fit.
Another Tool boxes :
o Communications Toolbox
o Control System Toolbox
o Data Acquisition Toolbox
o Database Toolbox
o Image Processing Toolbox
o Filter Design Toolbox
o Financial Toolbox
o Fixed-Point Toolbox
o Fuzzy Logic Toolbox
11.
11/14
o Simulink isa graphical, “drag and drop” environment for building
simple and complex signal and system dynamic simulations.
o It allows users to concentrate on the structure of the problem, rather
than having to worry (too much) about a programming language.
o The parameters of each signal and system block is configured by the
user (right click on block)
o Signals and systems are simulated over a particular time.
vs,vc
t
12.
o .fig
MATLAB Figure
o.m
MATLAB function, script, or class
o .mat
MATLAB binary file for storing variables
o .mex
MATLAB executable (platform specific, e.g. ".mexmac" for the Mac, ".mexglx" for Linux)
o In themid-1970s, Cleve Moler and several colleagues
developed 2 FORTRAN libraries
• LINPACK for solving linear equations
• EISPACK for solving eigenvalue problems.
o In the late 1970s, Moler, “chairman of the computer science at the
University of New Mexico”, wanted to teach students linear
algebra courses using the LINPACK and EISPACK software.
o He didn't want them to have to program in FORTRAN, because
this wasn't the purpose of the course.
16.
o He wrotea program that provide simple interactive access to
LINPACK and EISPACK.
o Over the next years, when he visit another university, he leave a
copy of his MATLAB.
o In 1983, second generation of MATLAB was devoloped written
in C and integrated with graphics.
o The MathWorks, Inc. was founded in 1984 to market and
continue development of MATLAB.
Command window
• savefilename % save data from workspace to a file
• load filename % loads data from file to a workspace
• who % list variables exist in the workspace
• whos % list variables in details
• clear % clear data stored in the workspace
• clc % clears the command window
• ctrl+c % To abort a command
• exit or quit % to quit MATLAB
19.
Command window
• ThroughCommand window:
o help command
Ex: >> help plot
o lookfor anystring
Ex: >> lookfor matrix
• Through Menus: (Using help window)
o doc command
Ex: >> doc plot
20.
• To createa variable, simply assign a value to a name:
»var1=3.14
»myString=‘hello world’
• Variable name must start with letter.
• It is case sensitive (var1 is different from Var1).
• To Check the variable name validation ‚isvarname *name+‛
o isvarname X_001
o isvarname if
• To check the Max length supported by current MATLAB
version ‚namelengthmax‛
21.
o MATLAB isa weakly typed language
No need to declear variables!
o MATLAB supports various types, the most often used are
»3.84
64-bit double (default)
»‘a’
16-bit char
o Most variables are vectors or matrices of doubles or chars
o Other types are also supported:
complex, symbolic, 16-bit and 8 bit integers.
22.
• Variable can’thave the same name of keyword
oUse ‚iskeyword‛ to list all keywords
• Built-in variables. Don’t use these names!
o i and j can be used to indicate complex numbers
o Pi has the value 3.1415
o ans stores the last unassigned value (like on a calculator)
o Inf and –Inf are positive and negative infinity
o NaN represents ‘Not a Number’
Variables
23.
• Warning:
MATLAB allowsusage of the names of the built in function.
This is dangerous since we can overwrite the meaning of a
function.
• To check that we can use:
>> which sin ...
C:MATLABtoolboxmatlabelfun...
>> which ans < ans is a variable.
Variables
24.
• A variablecan be given a value explicitly
»a = 10
shows up in workspace!
• Or as a function of explicit values and existing variables
»c = 1.3*45-2*a
• To suppress output, end the line with a semicolon
»cooldude = 13/3;
1-Scaler:
25.
• Like otherprogramming languages, arrays are an important
part of MATLAB
• Two types of arrays:
1) Matrix of numbers (either double or complex)
2) Cell array of objects (more advanced data structure)
2-Array:
• The differencebetween a row and a column vector can get by:
o Looking in the workspace
o Displaying the variable in the command window
o Using the size function
• To get a vector's length, use the length function
Vectors:
• Make matriceslike vectors
• Element by element
» a= [1 2;3 4];
• By concatenating vectors or matrices (dimension matters)
Matrix:
31.
• ones:
>> x= ones(1,7) % All elements are ones
• zeros:
>> x = zeros(1,7) % All elements are zeros
• eye:
>> Y = eye(3) % Create identity matrix 3X3
• diag:
>> x = diag([1 2 3 4],-1) % diagonal matrix with main
diagonal shift(-1)
32.
• magic:
>> Y= magic(3) %magic square matrix 3X3
• rand:
>> z = rand(1,4) % generate random numbers
from the period [0,1] in a vector 1x4
• randint:
>> x = randint(2,3, [5,7]) % generate random integer
numbers from (5-7) in a matrix 2x3
33.
• Arithmetic Operators:+ - * / ^ ‘
• Relational Operators: < > <= >= == ~=
• Logical Operators: Element wise & | ~
• Logical Operators: Short-circuit && ||
• Colon: (:)
Operation Orders:
Precedence Operation
1 Parentheses, innermost 1st.
2 Exponential, left to right
3 Multiplication and division, left to right
4 Addition and subtraction, left to right
34.
• Addition andsubtraction are element-wise ‛ sizes must match‛:
• All the functions that work on scalars also work on vectors
»t = [1 2 3];
»f = exp(t);
is the same as
»f = [exp(1) exp(2) exp(3)];
35.
• Operators (*/ ^) have two modes of operation:
1-element-wise :
• Use the dot: .(.*, ./, .^). ‚BOTH dimensions must match.‛
»a=[1 2 3]; b=[4;2;1];
»a.*b, a./b, a.^b all errors
»a.*b', a./b’, a.^(b’) all valid
36.
• Operators (*/ ^) have two modes of operation:
2-standard:
• Standard multiplication (*) is either a dot-product or an outer-
product
• Standard exponentiation (^) can only be done on square
matrices or scalars
• Left and right division (/ ) is same as multiplying by inverse
37.
o min(x); max(x)% minimum; maximum elements
o sum(x); prod(x) % summation ; multiplication of all elements
o length(x); % return the length of the vector
o size(x) % return no. of row and no. of columns
o anyVector(end) % return the last element in the vector
o find(x==value) % get the indices
o [v,e]=eig(x) % eign vectors and eign values
Exercise:
>>x = [ 16 3 2 13 ; 5 10 11 8 ; 9 6 7 12 ; 4 15 14 1 ]
38.
o fliplr(x) %flip the vector left-right
o Z=X*Y % vectorial multiplication
o y= sin(x).*exp(-0.3*x) % element by element multiplication
o mean %Average or mean value of every column.
o transpose(A) or A’ % matrix Transpose
o sum((sum(A))')
o diag(A) % diagonal of matrix
Exercise:
>>x = [ 16 3 2 13 ; 5 10 11 8 ; 9 6 7 12 ; 4 15 14 1 ]
• MATLAB indexingstarts with 1, not 0
• a(n) returns the nth element
• The index argument can be a vector.
In this case, each element is looked up individually, and
returned as a vector of the same size as the index vector.
Indexing:
41.
• Matrices canbe indexed in two ways
using subscripts(row and column)
using linear indices(as if matrix is a vector)
Matrix indexing: subscripts or linearindices
• Picking submatrices:
Indexing:
• To getthe minimum value and its index:
»[minVal , minInd] = min(vec);
maxworks the same way
• To find any the indices of specific values or ranges
»ind = find(vec == 9);
»[ind_R,ind_C] = find(vec == 9);
»ind = find(vec > 2 & vec < 6);
Indexing:
44.
>> X =[16 3 2 13 ; 5 10 11 8 ; 9 6 7 12 ; 4 15 14 1 ]
>>X(:,2) = [] % delete the second column of X
X =
16 2 13
5 11 8
9 7 12
4 14 1
Deleting Rows & Columns:
45.
• Scripts are
ocollection of commands executed in sequence
o written in the MATLAB editor
o saved as MATLAB files (.m extension)
• To create an MATLAB file from command-line
»edit helloWorld.m.
• or click
47.
• COMMENT!
o Anythingfollowing a % is seen as a comment
o The first contiguous comment becomes the script's help file
o Comment thoroughly to avoid wasting time later
• All variables created and modified in a script exist in the
workspace even after it has stopped running
48.
• Generate randomvector to represent the salaries of 10
employees that in range of 700-900 L.E. Then present some
statistic about these employees salaries :
o Max. Salary
o Empl. Max_ID
o Min. Salary
o Empl. Min_ID
49.
• Generate randomvector to represent the salaries of 10
employees that in range of 700-900 L.E.
clear;
clc;
close all;
Salaries =randint(1,10,[700,900]);
MaxSalary = max(Salaries); % Max. Salary
EmplMax_ID = find(Salaries==MaxSalary); %Empl. Max_ID
MinSalary = min(Salaries); %Min. Salary
EmplMin_ID = find(Salaries==MinSalary); %Empl. Min_ID
50.
• Any variabledefined as string is considered a vector of
characters, dealing with it as same as dealing with vectors.
>> str = ‘hello matlab’;
>> disp(str)
>> msgbox(str)
>> Num = input(‘Enter your number:’)
>> str = input(‘Enter your name:’,’s’)
-----------------------------------------------------------------------------
>> str = ‘7234’
>> Num = str2num(str)
>> number = 55
>> str = num2str(number)
Plot in 2-D:
•label the axes and add a title:
xlabel('x = 0:2pi')
ylabel('Sine of x')
title('Plot of the Sine Function’,'FontSize',12)
53.
Plot in 2-D:
•Multiple Data Sets in One Graph
x = 0:pi/100:2*pi;
y = sin(x);
y2 = sin(x-.25);
y3 = sin(x-.5);
plot(x,y,x,y2,x,y3)
• legend('sin(x)','sin(x-.25)','sin(x-.5)')
54.
Plot in 2-D:
•Line color
plot(x,y,'color_style_marker')
o Color strings are 'c', 'm', 'y', 'r', 'g', 'b', 'w', 'k'.
o These correspond to cyan, magenta, yellow, red, green, blue,
white, and black.
• Line Style
plot(x,y,'color_style_marker')
• Line Marker
USE MATLAB HELP
55.
Plot in 2-D:
Example:
x1= 0:pi/100:2*pi;
x2 = 0:pi/10:2*pi;
plot(x1,sin(x1),'r:',x2,sin(x2),'r+')
56.
Plot in 2-D:
•All Properties Of Plot Command :
plot(x,y,'--rs',<
'LineWidth',2,...
'MarkerEdgeColor','k',...
'MarkerFaceColor','g',...
'MarkerSize',10)
57.
Plot in 2-D:
•Imaginary and Complex Data:
t = 0:pi/10:2*pi;
Z=exp(i*t);
plot(real(z),imag(z))
OR
plot(z)
58.
Exercise:
Plot the vectory with respect the vector x in
the XY plan considering style:
o Dotted line
o diamond marker
o green color
o line width of 3
59.
Plot in 2-D:
•Adding Plots to an Existing Graph:
x1 = 0:pi/100:2*pi;
x2 = 0:pi/10:2*pi;
plot(x1,sin(x1),'r:‘)
hold on
plot(x2,sin(x2),'r+')
hold off
60.
Plot in 2-D:
•Figure Windows
o figure
o figure(n)
where n is the number in the figure title bar.
• Multiple Plots in One Figure:
x = linspace(0,2*pi,100);
y = sin(x);
y1 = cos(x);
subplot 211
plot(x, y);
subplot 212
plot(x, y1);
• area(x, y); %% think what
happened ??!!!
0 1 2 3 4 5 6 7
-1
-0.5
0
0.5
1
0 1 2 3 4 5 6 7
-1
-0.5
0
0.5
1
Specialized Plotting Functions:
polar: to make polar plots
»polar(0:0.01:2*pi,cos((0:0.01:2*pi)*2))
•bar : to make bar graphs
»bar(1:10,rand(1,10));
•stairs : plot piecewise constant functions
»stairs(1:10,rand(1,10));
•fill : draws and fills a polygon with specified vertices
»fill([0 1 0.5],[0 0 1],'r');
64.
Axes Control:
• Fortow-dimensional graphs:
>>axis([xmin xmax ymin ymax])
• For three-dimensional graphs:
>>axis([xmin xmax ymin ymax zmin zmax])
• To reenable MATLAB automatic limit selection:
>>axis auto
• makes the x-axis and y-axis the same length:
>>axis square
65.
Axes Control:
• Makesthe axes visible (This is the default):
>>axis on
• Makes the axes invisible:
>>axis off
• Turns the grid lines on:
>>grid on
• Turns them back off again:
>>grid off
66.
Exercise:
Plot the vectory with respect the vector x in
the XY plan considering style:
o Dotted line
o diamond marker
o green color
o line width of 3
67.
Relational Operators:
•MATLAB usesmostlystandard relational operators
equal ==
notequal ~=
greater than >
less than <
greater or equal >=
less or equal <=
•Logical operatorselementwiseshort-circuit (scalars)
And &&
Or ||
Not~
Xor xor
•Boolean values: zero is false, nonzero is true
68.
Relational Operators:
•MATLAB usesmostlystandard relational operators
equal ==
notequal ~=
greater than >
less than <
greater or equal >=
less or equal <=
•Logical operatorselementwiseshort-circuit (scalars)
And &&&
Or |||
Not~
Xor xor
•Boolean values: zero is false, nonzero is true
69.
If / else/ elseif :
• Basic flow-control, common to all languages
• MATLAB syntax is somewhat unique
• No need for parentheses : command blocks are between reserved
words
70.
If / else/ elseif :
a= input( ‘A‘ )
if rem(a,2) ==0
msgbox(‘a is even’);
end
71.
If / else/ elseif :
a= input( ‘A’ )
if rem(a,2) ==0
msgbox(‘a is even’);
else
msgbox(‘a is odd’);
end
72.
If / else/ elseif :
if y < 0
M = y + 3;
elseif y > 5
M = y – 3;
else
M = 0;
End
M
Switch case:
• SWITCHexpression must be a scalar or string constant.
• Unlike the C language switch statement, MATLAB switch does not
fall through.
If the first case statement is case statements do not execute.
• So, break statements are not required.
75.
For Loop :
•For loops : use for a known number of iterations
• MATLAB syntax:
• The loop variable:
o Is defined as a vector
o Is a scalar within the command block
o Does not have to have consecutive values (but it's usually cleaner
if they're consecutive)
• The command block:
o Anything between the for line and the end
76.
For Loop :
forn = 1:32
r(n) = n;
end
r
• Nested For Loop
for m = 1: 5
for n = 1: 7
A(m,n) = 1/(m+n-1);
end
end
77.
While loop:
• Thewhile is like a more general for loop:
• Don't need to know number of iterations
• The command block will execute while the conditional expression is
true
o Beware of infinite loops!
78.
While loop:
x =1;
while (x^2<10)
y=x^2;
plot(x,y,’or’); hold on
x = x+1;
end
79.
Continue:
• The continuestatement passes control to the next iteration of the loop
• Skipping any remaining statements in the body of the loop.
• In nested loops, continue passes control to the next iteration of the
loop enclosing it.
x=1;
for m=1:5
if (m==3)
continue;
end
x=m+x;
end
x
80.
Continue:
• The continuestatement passes control to the next iteration of the loop
• Skipping any remaining statements in the body of the loop.
• In nested loops, continue passes control to the next iteration of the
loop enclosing it.
• Example: x=1;
for m=1:5
if (m==3)
continue;
end
x=m+x;
end
x
81.
Break:
• The breakstatement lets you exit early from a for loop or while loop.
• In nested loops, break exits from the innermost loop only.
• Example:
x=1;
for m=1:5
if (m==3)
break;
end
x=m+x;
end
x
User-defined Functions:
Functions lookexactly like scripts, but for ONE difference
Functions must have a function declaration.
No need for return :
MATLAB 'returns' the variables whose names match those in the
function declaration.
User-defined Functions:
MATLAB providesthree basic types of variables:
Local Variables:
Each MATLAB function has its own local variables.
Global Variables:
If several functions, and possibly the base workspace, all
declare a particular name as global, then they all share a
single copy of that variable.
Persistent Variables:
You can declare and use them within M-file functions only.
Only the function in which the variables are declared is
allowed access to it.
86.
User-defined Functions:
%this fun.To sum 2 no’s.
function x=SUM2(a,b)
global z
x=a+b+z;
end
%this fun. To sum 2 no’s.
function x=SUM2(a,b)
x=a+b;
end
87.
Matrix :
1-One dimensionmatrix
Only one row or one column (vector)
2-Two dimensions
Has rows and columns
3-three dimension matrix (multidimensional array)
Has rows, columns and pages.
Cell Array:
• Usedto store different data type (classes) like vectors, matrices,
strings,<etc in single variable.
• Variables declaration:
>> X=3
>> Y=[1 2 3;4 5 6]
>> Z(2,5)=15
>> A(4,6)=[3 4 5] %…..(wrong)
• cell array:
>> C{1}=[2 3 5 10 20]
>> C{2}=‘hello’
>> C{3}=eye(3)
1 0 0
0 1 0
0 0 1
C
2 3 5 10 20 h e l l o
91.
Cell Array:
Z{2,5} =linspace(0,1,10)
Z{1,3} = randint(5,5,[0 100])
Z{1,3}(4,2) =77
Note:
• The default for cell array elements is empty
• The default for matrix elements is zero
77
Z
92.
Structure Array:
• Variableswith named ‚data container‛ called fields.
• The field can contain any kind of data.
• Example:
>> Student.name=‘Ali’;
>> Student.age=20;
>> Student.grade=‘Excellent’;
Student
age
name grade
Structure Array:
• Theneed of Structure Array
x.y.z = 3
x.y.w = [ 1 2 3]
x.p = ‘hello’
• Note: x can be array
96.
Symbolic Variable:
• symsx t
• x = sin(t)*exp(-0.3*t);
• sym(2)/sym(5)
• ans =
• 2/5
• sym(2)/sym(5) + sym(1)/sym(3)
• ans =
• 11/15
97.
findsym :
>> symsa b n t x z
>> f = x^n; g = sin(a*t + b);
>> findsym(f)
• ans =n, x
>> findsym(g)
• ans =a, b, t
98.
subs :
>> f= 2*x^2 - 3*x + 1
>> subs(f,2)
ans =3
>> syms x y
>> f = x^2*y + 5*x*sqrt(y)
>> subs(f, x, 3)
ans = 9*y+15*y^(1/2)
>> subs(f, y, 3)
ans = 3*x^2+5*x*3^(1/2)
99.
Symbolic Matrix:
>> symsa b c
>> A = [a b c; b c a; c a b]
A =[ a, b, c ]
[ b, c, a ]
[ c, a, b ]
>> sum(A(1,:))
ans = a+b+c
>> sum(A(1,:)) == sum(A(:,2)) % This is a logical test.
ans =1
100.
Simple:
• Simplify theexpression.
>> syms x
>> m = sin(x)/cos(x)
>> simple(m)
• Show expression in a user friendly format
>> m = sin(x)/cos(x)
>> pretty(m)
Pretty:
101.
Symbolic Plots:
• ezplot(...)
•Symbolic expression plot in the 2D
>> y = sin(x)*exp(-0.3*x)
>> ezplot(y,0,10)
• ezmesh(..)
• Symbolic expression plot in the 3D
>> z = sin(a)*exp(-0.3*a)/(cos(b)+2)
>> ezmesh(z,[0 10 0 10])
Differentiation diff :
•Numerical Difference or Symbolic Differentiation
>> z = [1, 3, 5, 7, 9, 11];
>> dz = diff(z)
>> Syms x t
>> x=t^4;
>> xd3 = diff(x,3)
104.
Differentiation diff(…) :
>>syms s t
>> f = sin(s*t)
>> diff(f,t)
ans = cos(s*t)*s
>> diff(f,t,2)
ans =-sin(s*t)*s^2
>> diff(y)./diff(x)
105.
Integration int(…)
• Symbolicintegration
>> int(y)
• Integration from 0 to 1
>> int(x,0,1)
• Integration from 0 to 2
>> int(x,0,2)
106.
solve equation solve(...):
>>syms x y real
>> eq1 = x+y-5
>> eq2 = x*y-6
>> [xa, ya] = solve(eq1, eq2)
OR
>> answer = solve(eq1, eq2)
answer.x
answer.y
>> syms x y real
>> s = solve('x+y=9','x*y=20')
107.
Differential Equations dsolve(..):
•Symbolic solution of ordinary differential equations
>> syms x real
>> diff_eq_sol = dsolve('m*D2x+b*Dx+k*x=0','Dx(0)=-1','x(0)=2')
>> syms m b k real
>> subs(diff_eq_sol, [m,b,k], [2,5,100])