MATLAB orientation course: Organized by FOCUS – R&D Fundamentals of MATLAB Delivered by Dr. Suman Chakraborty Assistant Professor Department of Mechanical Engineering IIT Kharagpur
Oct 30, 2014
MATLAB orientation course: Organized by FOCUS – R&D
Fundamentals of MATLAB
Delivered by
Dr. Suman ChakrabortyAssistant Professor
Department of Mechanical EngineeringIIT Kharagpur
MATLAB orientation course: Organized by FOCUS – R&D
Outline
• Introduction – Using MATLAB
• Basics of Programming
• Introduction to 2D and 3D plot
• Statistical Analysis
• Numerical Analysis
• Symbolic Mathematics
• Conclusion
MATLAB orientation course: Organized by FOCUS – R&D
What is MATLAB
• “matrix laboratory”
• Was originally written to provide easy access to matrix software developed by the LINPACK and EISPACK projects that together presented the state-of-the-artsoftware for matrix manipulation
• Standard instructional tool for industrial optimization and advance computations in mathematics, engineering, and science
MATLAB orientation course: Organized by FOCUS – R&D
More about MATLAB
• High-performance language for technical
computing
• Integrates computation, visualization, and
programming in an easy-to-use user
environment
MATLAB orientation course: Organized by FOCUS – R&D
Uses of MATLAB
• Math and computation
• Algorithm development
• Application development, including
graphical user interface (GUI) building
• Data analysis, exploration, and
visualization
• Modeling, simulation, and prototyping
• Scientific and engineering graphics
MATLAB orientation course: Organized by FOCUS – R&D
Components of MATLAB
• Basic Window
• Extensive Help
• GUI
• Toolboxes
• SIMULINK
MATLAB orientation course: Organized by FOCUS – R&D
Toolboxes
Control System Communications
Financial Fuzzy Logic
Image Processing Neural Network
PDE Signal Processing
Statistics Symbolic Math
And Many More …
MATLAB orientation course: Organized by FOCUS – R&D
Simulink
• Simulink Extensions
– Simulink Accelerator
– Real-Time Workshop
– Stateflow
• Blocksets
– DSP
– Nonlinear Control Design
– Communications
– Fixed-Point
MATLAB orientation course: Organized by FOCUS – R&D
Documentation Set
• MATLAB incorporates an exclusive set of online
help and function references containing
following divisions –
– MATLAB Installation Guide
– Getting Started with MATLAB
– Using MATLAB
– Using MATLAB Graphics
– The MATLAB Application Program Interface
Guide
– New features guide
MATLAB orientation course: Organized by FOCUS – R&D
Basic Window
Command line
Result
Visualization
File
Management
Working
Variables
Command
History
MenuWorking Directory
MATLAB orientation course: Organized by FOCUS – R&D
Help and Demo
Access Matlab Help Menu
Or
Type help in Command Window
Type help subtopic
Access Matlab Demo Menu
Or
Type demo in Command Window
MATLAB orientation course: Organized by FOCUS – R&D
Basics of Programming
MATLAB orientation course: Organized by FOCUS – R&D
File Types
• .m filesScript (executable program)
Function (user written function)
• .fig files Plot visualization and
manipulation
• .dat or
.mat filesWorking with Formatted
Data
MATLAB orientation course: Organized by FOCUS – R&D
Script and Function FilesScript Files Function Files
Parameter
Assignment
Statement
Evaluation
Function Declaration on top
Syntax: function [output parameters] = function name (input parameters)
Save the file in – function name.m
MATLAB orientation course: Organized by FOCUS – R&D
Variables
MATLAB variables are created when they appear on the left of an equal sign. The
general statement
>> variable = expression
creates the “variable” and assigns to it the value of the expression on the right hand side
||Types of variables||
Scalar Variables
Vector Variables
Matrices
Strings
MATLAB orientation course: Organized by FOCUS – R&D
Creating and Operating with
Variables
Scalar Vector
Strings
# variable with one row
and one column
>> x = 2;
>> y = 3;
>> z = x + y;
>> w = y – x;
>> u = y*x;
# variable with many rows
and columns
>> x = zeros(4,2);
>> y = ones(6,8);
>> x(1,3) = 1729;
>> x(:,1) = [0 0 0 0]
Colon Notation
>> sFirst = ‘Hello’
>> sSecond = ‘All’
>> sTotal = [sFirst, ‘ ’, sSecond]
MATLAB orientation course: Organized by FOCUS – R&D
Handling Matrices
Initialization Transpose
Multiplication
Inverse
Determinant Eigenvalues
MATLAB orientation course: Organized by FOCUS – R&D
Operators
Arithmetic operatorsPlus +
Minus -
Matrix multiply *
Array multiply .*
Matrix power ^
Array power .^
Backslash or left matrix divide \
Slash or right matrix divide /
Left array divide .\
Right array divide ./
Kronecker tensor product kron
Relational operators
Equal ==
Not equal ~=
Less than <
Greater than >
Less than or equal <=
Greater than or equal >=
Logical operators
Short-circuit logical AND &&
Short-circuit logical OR ||
Element-wise logical AND &
Element-wise logical OR |
Logical NOT ~
Logical EXCLUSIVE OR xor
MATLAB orientation course: Organized by FOCUS – R&D
CONTROL FLOW STATEMENTS
“for” Loop
for n=1:3 % Starting value=1, end=3, increment=1
for m=3:-1:1 % Starting value=3, end=3, increment= -1
a(n,m) = n.^2 + m.^2;
end % End of the “for” loop of “m”
end % End of the “for” loop of “n”
Output
2 5 10
a = 5 8 13
10 13 18
MATLAB orientation course: Organized by FOCUS – R&D
“while” Loop
n = 0; eps = 1;
while (1+eps) > 1
eps = eps/2;
n = n + 1; % “n” indicates how many times the loop is
executed
end
OUTPUT
n = 53
WHILE STATEMENTS
MATLAB orientation course: Organized by FOCUS – R&D
“if-else” Statement
rt = 1:4; pp=0; qq=0;
for i=1:4
if (rt(i) < 2)
pp = pp + 1; % Indicates how many times “if” executed
else
qq = qq + 1; % Indicates how many times “else” executed
end % End of “if-else” statement
end % End of “for” Loop
OUTPUT
pp = 1
qq = 3
IF-ELSE STATEMENTS
MATLAB orientation course: Organized by FOCUS – R&D
Debugging MATLAB
• Syntax Error
– e.g. a function has been misspelled or a parenthesis
has been omitted
– Display error message and line number– “??? Error: File: D:\MATLAB6p5\work\DNA melting langevin\HeteroSeq1.m
Line: 17 Column: 16
Assignment statements do not produce results. (Use == to test for
equality.)”
• Run-time Error
– e.g. insertion of a wrong variable or a calculation has
been performed wrongly such as “divided by zero” or
“NaN”
MATLAB orientation course: Organized by FOCUS – R&D
Introduction to 2D and 3D plot
MATLAB orientation course: Organized by FOCUS – R&D
Plots Using MATLAB
• 2-D Graphics
• 3-D Graphics
MATLAB orientation course: Organized by FOCUS – R&D
Example: Plot y = sin x in 0 ≤ x ≤ 2π
2-D Graphics
MATLAB orientation course: Organized by FOCUS – R&D
Command Line Plotting
MATLAB orientation course: Organized by FOCUS – R&D
Editing Figures
Edit Button
Legend
Text
Axis Label
Line or Point Type
MATLAB orientation course: Organized by FOCUS – R&D
Command Line Editing
MATLAB orientation course: Organized by FOCUS – R&D
Plot in Polar Co-ordinate
MATLAB orientation course: Organized by FOCUS – R&D
Plotting polynomialsy = x3 + 4x2 - 7x – 10 in 1 ≤ x ≤ 3
MATLAB orientation course: Organized by FOCUS – R&D
Specialized Plots using MATLAB
• Bar and Area Graphs
• Pie Charts
• Histograms
• Discrete Data Graphs
MATLAB orientation course: Organized by FOCUS – R&D
Discrete Data Graphs
MATLAB orientation course: Organized by FOCUS – R&D
3-D GraphicsUse “plot3” in place of “plot” : Simple Enough !!!!
MATLAB orientation course: Organized by FOCUS – R&D
Use of “Mesh”, “Surf”, “Contour”
MATLAB orientation course: Organized by FOCUS – R&D
Statistical Analysis
MATLAB orientation course: Organized by FOCUS – R&D
Data Import in MATLAB
• Data as explicit list of elements
– e.g. [1 3 -5 5 7 10 5]
• Create Data in M-file
– Data editor can be utilized, more effective than the first one
• Load data from ASCII file
– e.g. g = load(„mydata.dat‟)
• Read data using fopen, fread and MATLAB file I/O functions
MATLAB orientation course: Organized by FOCUS – R&D
Other methods of Import
• Specialized file reader function– dlmread Read ASCII data file
– imread Read image from graphics file
– wk1read Read spreadsheet (WK1) file
– auread Read Sun (.au) sound file
– wavread Read Microsoft WAVE (.wav) sound file
– readsnd Read SND resources and files (Macintosh)
• MEX-file to read the data
• Develop an associated Fortran or C
program
MATLAB orientation course: Organized by FOCUS – R&D
Exporting Data from MATLAB
• Diary Command
– creates a diary of present MATLAB session in
a disk file (excluding graphics)
– View and edit with any word processor
– e.g. diary mysession.out
diary off
• Save data in ASCII format
• Write data in .mat file
MATLAB orientation course: Organized by FOCUS – R&D
Specialized Write Functions
• dlmwrite Write ASCII data file
• wk1write Write spreadsheet (WK1) file
• imwrite Write image to graphics file
• auwrite Write Sun (.au) sound file
• wavwrite Write Microsoft WAVE (.wav) sound file
• writesnd Write SND resources and files (Macintosh)
MATLAB orientation course: Organized by FOCUS – R&D
Data Statistics
• Basic functions for data statistics:
– max Largest component
– min Smallest component
– mean Average or mean value
– median Median value
– std Standard deviation
– sort Sort in ascending order
– sortrows Sort rows in ascending order
– sum Sum of elements
MATLAB orientation course: Organized by FOCUS – R&D
More Statistical Functions
– prod Product of elements.
– diff Difference function and
approximate derivative
– trapz Trapezoidal numerical
integration
– cumsum Cumulative sum of elements
– cumprod Cumulative product of elements
– cumtrapz Cumulative trapezoidal numerical
integration
MATLAB orientation course: Organized by FOCUS – R&D
Covariance and Correlation
• Function cov evaluates
– Variance of a vector i.e. measure of spread or dispersion of sample variable
– Covariance of a matrix i.e. measure of strength of linear relationships between variables
• Function corrcoef evaluates
– correlation coefficient i.e. normalized measure of linear relationship strength between variables
MATLAB orientation course: Organized by FOCUS – R&D
Minimizing Functions
• Minimizing Functions with one variable
– fmin (function name, range)
• Minimizing Functions with several
variables
– fmins (function name, starting vector)
Example:
>> a = fmin (‘humps’,0.4,0.9)
>> a = 0.6370
MATLAB orientation course: Organized by FOCUS – R&D
Plotting Mathematical Functions
fplot('humps',[-3,3])
MATLAB orientation course: Organized by FOCUS – R&D
Functions for Finite Differences
• diff Difference between successive elements of a vector
Numerical partial derivatives of a vector
• gradient Numerical partial derivatives a matrix
• del2 Discrete Laplacian of a matrix
MATLAB orientation course: Organized by FOCUS – R&D
Functions for Fourier Analysis
• fft Discrete Fourier transform
• fft2 Two-dimensional discrete Fourier transform
• fftn N-dimensional discrete Fourier transform.
• ifft Inverse discrete Fourier transform
• ifft2 Two-dimensional inverse discrete Fourier transform
• ifftn N-dimensional inverse discrete Fourier transform
• abs Magnitude
• angle Phase angle
MATLAB orientation course: Organized by FOCUS – R&D
Solving Linear Equations
• Solution by Square System
• Overdetermined System
• Undetermined System
General situation involves a square coefficient
matrix A and a single right-hand side column
vector b.
e.g. Ax = b then solution: x = b\A
System is solved by „backslash‟ operator
MATLAB orientation course: Organized by FOCUS – R&D
Overdetermined Equation
With a, b dataset fitting equation is predicted asaeccab 21)(
MATLAB finds C1 = 0.4763 and C2 = 0.3400
MATLAB orientation course: Organized by FOCUS – R&D
Undetermined Equation
• More unknowns than equations
• Solution is not unique
• MATLAB finds a basic solution even it is
not unique
• Associated constraints can not be coupled
to MATLAB
MATLAB orientation course: Organized by FOCUS – R&D
Ordinary Differential Equations
• Nonstiff solvers– ode23: an explicit Runge-Kutta (2,3) formula i.e.
Bogacki-Shampine pair
– ode45: an explicit Runge-Kutta (4,5) formula i.e.
Dormand-Prince pair
– ode113: Adams-Bashforth-Moulton PECE solver
• Stiff solvers
– ode15s, ode23s, ode23t and ode23tb
MATLAB orientation course: Organized by FOCUS – R&D
Generic Syntax for ODE Solver
>> [T,Y] = solver („Func‟, tspan, y0);
'Func' String containing the name of the file that contains the system of ODEs
tspan Vector specifying the interval of integration. For a two-element vector tspan = [t0 tfinal], the solver integrates from t0 to tfinal.
y0 Vector of initial conditions for the problem.
Output:
T Column vector of time points
Y Solution array. Each row in Y corresponds to the solution at a time returned in the corresponding row of T
MATLAB orientation course: Organized by FOCUS – R&D
Numerical Integration
The area under a section of a function F(x)
can be evaluated by numerically
integrating F(x), a process known as
quadrature. The in-built MATLAB functions
for 1D quadrature are:
• quad - Adaptive Simpson‟s Rule
• quad8 - Adaptive Newton Cotes 8
panel rule
MATLAB orientation course: Organized by FOCUS – R&D
Numerical Integration - Example
>> Q = quad („sin‟,0,2*pi)
>> Q = 0
MATLAB orientation course: Organized by FOCUS – R&D
Performing Double Integral
% function declaration
>> function integrnd_out = integrnd (x,y)
>> integrnd_out = x*sin(x) + y*cos(y);
% Double Integral Evaluation
>> x_min = pi;
>> x_max = 2*pi;
>> y_min = 0;
>> y_max = pi;
>>
>> intg_result = dblquad („integrnd‟, x_min, x_max, y_min, y_max)
>> intg_result = -9.8698
MATLAB orientation course: Organized by FOCUS – R&D
Symbolic Mathematics
MATLAB orientation course: Organized by FOCUS – R&D
Symbolic Mathematics
• The Symbolic Math Toolboxes include symbolic computation into MATLAB‟s numeric environment
• Facilities Available with Symbolic Math Toolboxes contain – Calculus, Linear Algebra, Simplification, Solution of Equations, Variable-Precision Arithmetic, Transforms and Special Applied Functions
MATLAB orientation course: Organized by FOCUS – R&D
Demonstrations
Command Line Demonstrations are available
with Symbolic Math Toolboxes
MATLAB orientation course: Organized by FOCUS – R&D
Example: Differentiation
>> syms a x
>> fx = sin (a*x)
>> dfx = diff(fx)
>> dfx = cos (a*x)*a
% with respect to a
>> dfa = diff(fx, a)
>> dfa = cos (a*x)*x
MATLAB orientation course: Organized by FOCUS – R&D
In Summary - Why MATLAB !
• Interpreted language for numerical computation
• Perform numerical calculations and visualize the
results without complicated and time exhaustive
programming
• Good accuracy in numerical computing
• Specially in-built with commands and
subroutines that are commonly used by
mathematicians
• Toolboxes to make advance scientific
computations easy to implement