Introduction to MATLAB - The Astro Home Page

advertisement
Introduction to MATLAB
Computational Probability and
Statistics
CIS 2033 Section 003
Djordje Gligorijevic, Temple University, Spring 2015
About MATLAB
 MATLAB (MATrix LABoratory) is a high level language made
for:
 Numerical Computation (Technical computing)
 Visualization
 Application Development
 Everything is a matrix – easy to do Linear Algebra and other
mathematical fields that use Linear Algebra (Statistics,
Fourier Analysis, Optimization, Filtering,…)
 Useful tool for mathematical analysis and simulation
Djordje Gligorijevic, Temple University, Spring 2015
MATLAB Software Access
 All Temple University in-campus computers have
student-version MATLAB installed
 Temple University also provides a student license for
every student, just go to MATLAB Site Licensed Software
page:
• https://computerservices.temple.edu/matlab-site-licensedsoftware
Djordje Gligorijevic, Temple University, Spring 2015
Matlab Layouts
Layouts of versions MATLAB 1.0 to MATLAB 8.2
Editor
Workspace
Current folder view
Command Window
Djordje Gligorijevic, Temple University, Spring 2015
Command History
Matlab Layouts – new movement
Layouts of versions MATLAB 8.3 -
Editor/Variables View
Current
Window
Workspace
Command Window
Djordje Gligorijevic, Temple University, Spring 2015
MATLAB competition
 Due to its cost, MATLAB has a hard time finding a dominance in
the industry.
 Other languages provide a “bigger bang for the buck” thanks to
the active communities that maintain widely used libraries.
 An examples of such languages that have became a “hot topic”
recently are:
 Python (NumPy, SciPy, Matplotlib, SciKit Learn,…)
 R
 However, MATLAB is still completely dominating when it comes
to performance.
Djordje Gligorijevic, Temple University, Spring 2015
MATLAB Variables
There are a few predefined variables in MATLAB:
ans
Variable which has been assigned a value of most recent expression,
which hasn’t had assigned a value of its output to a specific variable
pi
Number pi = 3.1415926535897932384626433832795
eps
inf
Smallest difference between two numbers MATALB can see
NaN
Undefined value (Not-a-Number), Ex. 0/0
i
Imaginary one
Stands for an infinite value
Djordje Gligorijevic, Temple University, Spring 2015
Matlab Structures
Numeric Types:
Matlab provides wide range of numerical and floating
point types such are
•
•
•
double,
int (8,16,32 and 64 bits),
uint ( 8,16,32,64 bits).
Some functions on numeric types:
Djordje Gligorijevic, Temple University, Spring 2015
Elementary math functions
sqrt(x)
exp(x)
abs(x)
log(x)
Square root
log10(x)
factorial(x)
Logarithm with basis 10
fix(x)
Round to lower value
Exponential function - ex
Absolute value
Natural logarithm ln(x), loge(x)
Factoriel x – x!
sin(x)
cos(x)
tan(x)
cot(x)
Sinus x (in radians)
round(x)
ceil(x)
Round to an integer
rem(y,x)
sign(x)
Remainder of x/y division
Cosinus s
Tangens x
Cotangens x
Round to higher value
Signum function
Djordje Gligorijevic, Temple University, Spring 2015
Matlab Structures, Contd.
Matrices and Vectors
To enter a matrix:
2 5
3
6 4 1
>> A = [2, 5, 3; 6, 4, 1]
>> B = [1:1.5:6; 2 3 4 5]
>> for i=1:4
for j=1:3
C(i,j)=i*j;
end
end
>> D =[]; D=[D;5]; D=[D;6;7]
>> E = zeros(4, 5)
Djordje Gligorijevic, Temple University, Spring 2015
Matlab Structures, Contd.
Matrices and Vectors
As every variable in MATLAB can be a matrix, we can do basic
operations on them:
Addition:
>> C = A + B
Subtraction:
>> D = A – B
Multiplication:
>> E = A * B (Matrix multiplication)
>> E = A .* B (Element wise multiplication, A and B same size)
Division:
Left Division and Right Division
>> F = A . / B (Element wise division)
>> F = A / B = A*inv(B) (A * inverse of B)
>> F = A . \ B (Element wise division)
>> F = A \ B=inv(A)*B (inverse of A * B)
Djordje Gligorijevic, Temple University, Spring 2015
Elementary matrix functions
max
Maximum of elements
+
Matrix addition
min
Minimum of elements
-
Matrix substraction
sum
Sum of elements
*
Matrix multiplication
prod
Product of elements
/
Matrix division
median
Median (Middle value)
\
Left matrix division
mean
Mean (Agerage)
^
Power
std
Standard deviation
'
Transpose
any
Is there any zero
inv
Inverse of the matrix
Never use it!!!!
all
Are all elements zero
sort
Sort columns (or rows)
Djordje Gligorijevic, Temple University, Spring 2015
Generating basic matrices
Matrix with ZEROS:
>> A = zeros(m, n)
Matrix with ONES:
>> B = ones(m, n)
IDENTITY Matrix:
>> I = eye(m, n)
RANDOM Matrix:
>> I = rand(m, n)
MAGIC SQUARE Matrix:
>> I = magic(n)
m  Rows
n  Columns
zeros, ones, eye, rand, magic  Matlab functions
Djordje Gligorijevic, Temple University, Spring 2015
Random Number Generators
 Rand(m,n): matrix with each entry ~ U(0,1)
 Randn(m,n): standard normal distribution
 Mvnrnd(Mu, Sigma): Multivariate normal
random numbers
Djordje Gligorijevic, Temple University, Spring 2015
Array indexing, obtaining information
 Size(A): return [m n]
 Length(A): length of a vector
 Length(A) = max(size(A))
 B = A(2:4,3:5)
 B is the subset of A from row 2 to row 4, column 3 to
column 5
 C = A(2)
 C is a scalar with value of second index in matrix A
 Matlab matrix indicies go iteratively top-down,
column by column
 D = A(:, [1,15,20])

Select all rows but a few columns
 A(:, 2)=[]
 Delete second column
Djordje Gligorijevic, Temple University, Spring 2015
Characters and Strings
 A sequence of characters enclosed in single quotes
 assign a string to a variable
 A = ‘Alice’
 use two single quotes within the definition if the text
includes a single quote
 Concatenaton
 With square brackets as concatenate numeric arrays
 A = [‘Alice’, ’followed’, ’the’, ’rabbit.’]
 Convert numeric values to strings
 num2str
 int2str
Djordje Gligorijevic, Temple University, Spring 2015
Save/Load Data
 Save fname
 Save all workspace data into fname.mat
 Save fname x y z
 Save(fname): when fname is a variable
 Save large files
 save('fname.mat','fname','-v7.3');
 Load fname
 Load fname x y
 No error in data
 You can run simulation intermittently
 Save/load data between runs
Djordje Gligorijevic, Temple University, Spring 2015
Programming in MATLAB - Scripts
 A file with a .m extension containing
 Multiple sequential lines of MATLAB commands
 Function calls
 To run a script
 Save a file in the current folder and type its name at the
command line
 Run scripts from the Editor by pressing the Run button
 Comments
 To describe the code
 Add comments whenever you write code
 For comments add % symbol first
Djordje Gligorijevic, Temple University, Spring 2015
Programming in MATLAB - Functions
 Equivalent to subroutines or methods in other programming
languages
 To call a function, enclose its input arguments in parentheses
 If there are multiple input arguments, separate them with commas
 Return output from a function by assigning it to a variable
 When there are multiple output arguments, enclose them in square brackets
 To call a function that does not require any inputs and does not return
any outputs, type only the function name
Djordje Gligorijevic, Temple University, Spring 2015
Programming in MATLAB – Control Flow
 MATLAB allows control flow operations:
 Conditional statements, loops, branching
Djordje Gligorijevic, Temple University, Spring 2015
Plotting in MATLAB – Basic 2-D Figure Plot
 Plot(X, Y):
 Plots vector Y versus vector X




Hold: next plot action on the same figure
Title(‘title text here’)
Xlabel(‘…’), ylabel(‘…’)
Axis([XMIN XMAX YMIN YMAX])
 Or use xlim or ylim
 Legend(‘…’)
 Grid
 Example demo
Djordje Gligorijevic, Temple University, Spring 2015
Plotting in MATLAB – Basic 3-D Figure Plot
 x=[0:10]; y=[0:10]; z=x’*y;
 mesh(x,y,z); figure; surf(x,y,z);
100
100
80
80
60
60
40
40
20
20
0
10
0
10
10
10
8
5
8
5
6
4
6
4
0
2
0
Djordje Gligorijevic, Temple University, Spring 2015
0
2
0
MATLAB – Help
 The most important thing to remmember about
MATLAB – it has great Help and Documentation
 Just press Shift + F1 to search for needed function
 Or select a function and press F1
Djordje Gligorijevic, Temple University, Spring 2015
End of MATLAB introduction
Any Questions?
Djordje Gligorijevic, Temple University, Spring 2015
Download