Mohamed Abd Elhay
Mohamed Abd Elahy
Embedded SW Engineer
Email/ mhmd.a.elhay@gmail.com
o MATLAB Application & usage
o MATLAB Environment
o MATLAB Variables
o MATLAB Operations.
o MATLAB Built-in Fun.
o MATLAB Scripts.
MATLAB stands for matrix 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.
o Math and computation
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:
The MATLAB system have 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
StatisticsStatistics Toolbox
o Contains about 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
Neural Network Toolbox
o GUI 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
Curve Fitting Toolbox
o Allows 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/14
o Simulink is a 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
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)
Excel / COM
File I/O
C/C++
Java
Perl
ExcelCOM
o In the mid-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.
o He wrote a 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.
Variable
browser
Command
window
Command history
MATLAB Disktop
Command window
• save filename % 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
Command window
• Through Command window:
o help command
Ex: >> help plot
o lookfor anystring
Ex: >> lookfor matrix
• Through Menus: (Using help window)
o doc command
Ex: >> doc plot
• To create a 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‛
o MATLAB is a 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.
• Variable can’t have 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
• Warning:
MATLAB allows usage 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
• A variable can 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:
• Like other programming 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:
• comma or space separated values between brackets
»row = [1 2 5.4 -6.6]
»row = [1, 2, 5.4, -6.6];
• Command window:
• Workspace:
Row Vector:
• Semicolon separated values between brackets
»column = [4;2;7;4]
• Command window:
• Workspace:
Column vector:
• The difference between 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:
>> startP= 1;
>> endP= 10;
>> number_of_points= 100;
>> x= linspace (startP, endP, number_of_points)
>> step= 1;
>> x= startP : step : endP;
Vectors:
• Make matrices like vectors
• Element by element
» a= [1 2;3 4];
• By concatenating vectors or matrices (dimension matters)
Matrix:
• 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)
• 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
• 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
• Addition and subtraction 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)];
• 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
• 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
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 ]
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 ]
»sqrt(2)
»log(2), log10(0.23)
»cos(1.2), atan(-.8)
»exp(2+4*i)
»round(1.4), floor(3.3), ceil(4.23)
»angle(i); abs(1+i);
Exercise:
USE The
MATLAB
help
• MATLAB indexing starts 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:
• Matrices can be 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 select rows or columns of a matrix:
Indexing:
• To get the 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:
>> 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:
• Scripts are
o collection 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
• COMMENT!
o Anything following 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
• Generate random vector 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
• Generate random vector 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
• Any variable defined 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)
x = linspace(0,2*pi,200);
y = sin(x);
plot(x, y);
0 1 2 3 4 5 6 7 8 9 10
-2
-1.5
-1
-0.5
0
0.5
1
1.5
2
Plot in 2-D:
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)
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)')
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
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+')
Plot in 2-D:
• All Properties Of Plot Command :
plot(x,y,'--rs',<
'LineWidth',2,...
'MarkerEdgeColor','k',...
'MarkerFaceColor','g',...
'MarkerSize',10)
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)
Exercise:
Plot the vector y 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
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
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
Plot on 3D:
t = 0:0.1:2*pi;
x = sin(t);
y = cos(t);
plot3(x,y,t)
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
-1
-0.5
0
0.5
1
0
1
2
3
4
5
6
7
Plot surface in the 3D :
x = linspace(1,10,20);
y = linspace(1,5,10);
[XX,YY] = meshgrid(x,y);
ZZ = sin(XX)./exp(YY);
mesh(ZZ)
0
2
4
6
8
10
12
14
16
18
20
0
2
4
6
8
10
-0.4
-0.3
-0.2
-0.1
0
0.1
0.2
0.3
0.4
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');
Axes Control:
• For tow-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
Axes Control:
• Makes the 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
Exercise:
Plot the vector y 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
Relational Operators:
•MATLAB uses mostlystandard 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
Relational Operators:
•MATLAB uses mostlystandard 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
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
If / else / elseif :
a= input( ‘A‘ )
if rem(a,2) ==0
msgbox(‘a is even’);
end
If / else / elseif :
a= input( ‘A’ )
if rem(a,2) ==0
msgbox(‘a is even’);
else
msgbox(‘a is odd’);
end
If / else / elseif :
if y < 0
M = y + 3;
elseif y > 5
M = y – 3;
else
M = 0;
End
M
Switch case:
A='bye';
switch A
case 'hi'
msgbox('he says hi')
case 'bye'
msgbox('he says bye')
otherwise
msgbox('nothing')
end
Switch case:
• SWITCH expression 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.
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
For Loop :
for n = 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
While loop:
• The while 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!
While loop:
x = 1;
while (x^2<10)
y=x^2;
plot(x,y,’or’); hold on
x = x+1;
end
Continue:
• The continue statement 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
Continue:
• The continue statement 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
Break:
• The break statement 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
Error Trapping:
A= input( ‘ Matrix = ‘ )
try
B = inv (A);
catch
msgbox(‘Matrix is not square’)
end
User-defined Functions:
Functions look exactly 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:
User-defined Functions:
MATLAB provides three 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.
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
Matrix :
1-One dimension matrix
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.
Matrix :
Create the 3D matrix
>> M=ones(4,4,4)
Matrix :
Cell Array:
• Used to 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
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
Structure Array:
• Variables with 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:
>> manager = struct ('Name', 'Ahmed', 'ID', 10, 'Salary', 1000)
manager =
Name: 'Ahmed'
ID: 10
Salary: 1000
Structure Array:
>> manager(3)=struct ('Name', 'Ali','ID',20, 'Salary',2000)
manager =
1x3 struct array with fields:
Name
ID
Salary
Structure Array:
• The need of Structure Array
x.y.z = 3
x.y.w = [ 1 2 3]
x.p = ‘hello’
• Note: x can be array
Symbolic Variable:
• syms x 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
findsym :
>> syms a b n t x z
>> f = x^n; g = sin(a*t + b);
>> findsym(f)
• ans =n, x
>> findsym(g)
• ans =a, b, t
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)
Symbolic Matrix:
>> syms a 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
Simple:
• Simplify the expression.
>> syms x
>> m = sin(x)/cos(x)
>> simple(m)
• Show expression in a user friendly format
>> m = sin(x)/cos(x)
>> pretty(m)
Pretty:
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])
Limit:
>> syms h n x
>> limit( (cos(x+h) - cos(x))/h,h,0 )
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)
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)
Integration int(…)
• Symbolic integration
>> int(y)
• Integration from 0 to 1
>> int(x,0,1)
• Integration from 0 to 2
>> int(x,0,2)
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')
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])
• www.mathworks.com/
• ITI MATLAB Course
• MIT : Introduction to MATLAB
MATLAB Programming

MATLAB Programming

  • 1.
  • 2.
    Mohamed Abd Elahy EmbeddedSW Engineer Email/ mhmd.a.elhay@gmail.com
  • 4.
    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)
  • 13.
    Excel / COM FileI/O C/C++ Java Perl
  • 14.
  • 15.
    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.
  • 17.
  • 18.
    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:
  • 26.
    • comma orspace separated values between brackets »row = [1 2 5.4 -6.6] »row = [1, 2, 5.4, -6.6]; • Command window: • Workspace: Row Vector:
  • 27.
    • Semicolon separatedvalues between brackets »column = [4;2;7;4] • Command window: • Workspace: Column vector:
  • 28.
    • 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:
  • 29.
    >> startP= 1; >>endP= 10; >> number_of_points= 100; >> x= linspace (startP, endP, number_of_points) >> step= 1; >> x= startP : step : endP; Vectors:
  • 30.
    • 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 ]
  • 39.
    »sqrt(2) »log(2), log10(0.23) »cos(1.2), atan(-.8) »exp(2+4*i) »round(1.4),floor(3.3), ceil(4.23) »angle(i); abs(1+i); Exercise: USE The MATLAB help
  • 40.
    • 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:
  • 42.
    • To selectrows or columns of a matrix: Indexing:
  • 43.
    • 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)
  • 51.
    x = linspace(0,2*pi,200); y= sin(x); plot(x, y); 0 1 2 3 4 5 6 7 8 9 10 -2 -1.5 -1 -0.5 0 0.5 1 1.5 2 Plot in 2-D:
  • 52.
    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
  • 61.
    Plot on 3D: t= 0:0.1:2*pi; x = sin(t); y = cos(t); plot3(x,y,t) -1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1 -1 -0.5 0 0.5 1 0 1 2 3 4 5 6 7
  • 62.
    Plot surface inthe 3D : x = linspace(1,10,20); y = linspace(1,5,10); [XX,YY] = meshgrid(x,y); ZZ = sin(XX)./exp(YY); mesh(ZZ) 0 2 4 6 8 10 12 14 16 18 20 0 2 4 6 8 10 -0.4 -0.3 -0.2 -0.1 0 0.1 0.2 0.3 0.4
  • 63.
    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
  • 73.
    Switch case: A='bye'; switch A case'hi' msgbox('he says hi') case 'bye' msgbox('he says bye') otherwise msgbox('nothing') end
  • 74.
    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
  • 82.
    Error Trapping: A= input(‘ Matrix = ‘ ) try B = inv (A); catch msgbox(‘Matrix is not square’) end
  • 83.
    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.
  • 84.
  • 85.
    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.
  • 88.
    Matrix : Create the3D matrix >> M=ones(4,4,4)
  • 89.
  • 90.
    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
  • 93.
    Structure Array: >> manager= struct ('Name', 'Ahmed', 'ID', 10, 'Salary', 1000) manager = Name: 'Ahmed' ID: 10 Salary: 1000
  • 94.
    Structure Array: >> manager(3)=struct('Name', 'Ali','ID',20, 'Salary',2000) manager = 1x3 struct array with fields: Name ID Salary
  • 95.
    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])
  • 102.
    Limit: >> syms hn x >> limit( (cos(x+h) - cos(x))/h,h,0 )
  • 103.
    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])
  • 108.
    • www.mathworks.com/ • ITIMATLAB Course • MIT : Introduction to MATLAB