You are on page 1of 52

Introduction to Matlab

By: İ.Yücel Özbek


Outline:
 What is Matlab?
 Matlab Screen
 Variables, array, matrix, indexing
 Operators (Arithmetic, relational, logical )
 Display Facilities
 Flow Control
 Using of M-File
 Writing User Defined Functions
 Conclusion
What is Matlab?
 Matlab MATLAB (Matrix laboratory) is
basically a high level language which has
many specialized toolboxes for making things
easier for us

Matlab

High Level
Languages such as
C, Pascal etc.

Assembly
What are we interested in?
 Matlab (C++ and LabView) are required in
almost every research position.
 Advantage: Good toolbox library
 Disavantage:
 Longer processing time
 Price
Free Clones
 Octave
 Scilab
Matlab Screen
 Command Window
 type commands

 Current Directory
 View folders and m-files

 Workspace
 View program variables
 Double click on a variable
to see it in the Array Editor

 Command History
 view past commands
 save a whole session
using diary
Variables
 No need for types. i.e.,

int a;
double b;
float c;

 All variables are created with double precision unless


specified and they are matrices.
Example:
>>x=5;
>>x1=2;

 After these statements, the variables are 1x1 matrices


with double precision
Getting help
 The help command >> help
 The help window >> helpwin
 The lookfor command >> lookfor
 CANCEL >>CTR C
 GOOGLE: Matlab...
»» lookfor
lookfor scholes
scholes
BLSLAMBDA
BLSLAMBDA Black-Scholes
Black-Scholes elasticity.
elasticity.
BLSPRICE
BLSPRICE Black-Scholes put and
Black-Scholes put and call
call pricing.
pricing.
BLSRHO
BLSRHO Black-Scholes
Black-Scholes sensitivity
sensitivity to to interest
interest rate
rate change.
change.
....
....
»» help
help blsprice
blsprice
BLSPRICE
BLSPRICE Black-Scholes
Black-Scholes put
put and
and call
call pricing.
pricing.
[CALL,PUT]
[CALL,PUT] == BLSPRICE(SO,X,R,T,SIG,Q)
BLSPRICE(SO,X,R,T,SIG,Q) returns
returns the
the value
value of
of
call
call and
and put
put options
options using
using the
the Black-Scholes
Black-Scholes pricing
pricing formula.SO
formula.SO isis
the current asset price, X is the exercise price, R is
the current asset price, X is the exercise price, R is the risk-the risk-
free
free
....
....
Array, Matrix
 a vector x = [1 2 5 1]

x =
1 2 5 1

 a matrix x = [1 2 3; 5 1 4; 3 2 -1]

x =
1 2 3
5 1 4
3 2 -1

 transpose y = x’ y =
1
2
5
1
Long Array, Matrix
 t =1:10

t =
1 2 3 4 5 6 7 8 9 10
 k =2:-0.5:-1

k =
2 1.5 1 0.5 0 -0.5 -1

 B = [1:4; 5:8]

x =
1 2 3 4
5 6 7 8
Generating Vectors from functions
 zeros(M,N) MxN matrix of zeros x = zeros(1,3)
x =
0 0 0

 ones(M,N) MxN matrix of ones


x = ones(1,3)
x =
1 1 1
 rand(M,N) MxN matrix of uniformly
distributed random x = rand(1,3)
numbers on (0,1) x =
0.9501 0.2311 0.6068
Matrix Index
 The matrix indices begin from 1 (not 0 (as in C))
 The matrix indices must be positive integer
Given:

A(-2), A(0)

Error: ??? Subscript indices must either be real positive integers or logicals.

A(4,2)
Error: ??? Index exceeds matrix dimensions.
Concatenation of Matrices
 x = [1 2], y = [4 5], z=[ 0 0]

A = [ x y]

1 2 4 5

B = [x ; y]

1 2
4 5

C = [x y ;z]
Error:
??? Error using ==> vertcat CAT arguments dimensions are not consistent.
Operators (arithmetic)
+ addition
- subtraction
* multiplication
/ division
^ power
‘ complex conjugate transpose
Matrices Operations

Given A and B:

Addition Subtraction Product Transpose


Operators
Element by Element
.* element-by-element multiplication
./ element-by-element division
.^ element-by-element power

FIND fuction
X = [1 0 4 -3 0 0 0 8 6];

find(X > 2)
ans =

3 8 9
The use of “.” – “Element” Operation
A = [1 2 3; 5 1 4; 3 2 1]
A=
1 2 3
5 1 4
3 2 -1

b = x .* y c=x./y d = x .^2
x = A(1,:) y = A(:,3)
b= c= d=
x= y= 3 8 -3 0.33 0.5 -3 1 4 9
1 2 3 3 4 -1
K= x^2
Erorr:
??? Error using ==> mpower Matrix must be square.
B=x*y
Erorr:
??? Error using ==> mtimes Inner matrix dimensions must agree.
Math Functions
Basic Task: Plot the function sin(x)
between 0≤x≤4π
 Create an x-array of 100 samples between 0
and 4π.

>>x=linspace(0,4*pi,100);

 Calculate sin(.) of the x-array


1

0.8

0.6

>>y=sin(x); 0.4

0.2

 Plot the y-array -0.2

-0.4

-0.6

>>plot(y) -0.8

-1
0 10 20 30 40 50 60 70 80 90 100
Plot the function e-x/3sin(x) between
0≤x≤4π
 Create an x-array of 100 samples between 0
and 4π.
>>x=linspace(0,4*pi,100);

 Calculate sin(.) of the x-array


>>y=sin(x);

 Calculate e-x/3 of the x-array


>>y1=exp(-x/3);

 Multiply the arrays y and y1


>>y2=y*y1;
Plot the function e-x/3sin(x) between
0≤x≤4π
 Multiply the arrays y and y1 correctly
>>y2=y.*y1;

 Plot the y2-array


0.7

>>plot(y2) 0.6

0.5

0.4

0.3

0.2

0.1

-0.1

-0.2

-0.3
0 10 20 30 40 50 60 70 80 90 100
Display Facilities 0.7

0.6

0.5

 plot(.) 0.4

0.3

Example:
0.2

0.1
>>x=linspace(0,4*pi,100); 0

>>y=sin(x); -0.1

>>plot(y) -0.2

>>plot(x,y) -0.3
0 10 20 30 40 50 60 70 80 90 100

stem(.)
0.7

 0.6

0.5

0.4

0.3

Example:
0.2

0.1

>>stem(y) 0

>>stem(x,y) -0.1

-0.2

-0.3
0 10 20 30 40 50 60 70 80 90 100
Display Facilities

 title(.)
This is the sinus function
>>title(‘This is the sinus function’) 1

0.8

 xlabel(.) 0.6

0.4

>>xlabel(‘x (secs)’) 0.2

sin(x)
0

 ylabel(.) -0.2

-0.4

-0.6

-0.8
>>ylabel(‘sin(x)’) -1
0 10 20 30 40 50 60 70 80 90 100
x (secs)
Display Facilities

 HOLD ON holds the current plot


 HOLD OFF releases hold on current plot
 HOLD toggles the hold state
 SUBPLOT- display multiple axes
»subplot(2,2,1);
»subplot(2,2,1);
»» ……

»subplot(2,2,2)
»subplot(2,2,2)
subplot(#rows, #cols, index) »» ...
...

»subplot(2,2,3)
»subplot(2,2,3)
»» ...
...

»subplot(2,2,4)
»subplot(2,2,4)
»» ...
...
Alternative Scales for Axes

LOGLOG SEMILOGY
Both axes log Y
logarithmic linear X

SEMILOGX PLOTYY
log X 2 sets of
linear Y linear axes

»other_axes
Surface Plot Example
»» tt == 0.001:0.001:0.03;
0.001:0.001:0.03;
»» ss == 90:0.2:100;
90:0.2:100;
»» [gt,
[gt, gs]
gs] == meshgrid(t,s);
meshgrid(t,s);
»» rr == 0.1;
0.1;
»» kk == 95;
95;
»» [call,
[call, put]
put] ==
blsprice(gs,k,r,gt,0.3);
blsprice(gs,k,r,gt,0.3);
»» surf(t,s,call)
surf(t,s,call)
»» xlabel('Time
xlabel('Time to
to Maturity')
Maturity')
»» ylabel('Spot
ylabel('Spot Price’);
Price’);

»surface_ex
3-D Surface Plotting

»surf_3d
Specialized Plotting Routines

»spec_plots
Operators (relational, logical)

 == Equal to
 ~= Not equal to
 < Strictly smaller
 > Strictly greater
 <= Smaller than or equal to
 >= Greater than equal to
 & And operator
 | Or operator
Flow Control

 if
 for
 while
 break
 ….
Control Structures
Some Dummy Examples
 If Statement Syntax
if ((a>3) & (b==5))
Some Matlab Commands;
if (Condition_1) end
Matlab Commands
if (a<3)
elseif (Condition_2) Some Matlab Commands;
Matlab Commands elseif (b~=5)
Some Matlab Commands;
elseif (Condition_3) end
Matlab Commands
if (a<3)
else Some Matlab Commands;
Matlab Commands else
Some Matlab Commands;
end end
Control Structures
Some Dummy Examples
 For loop syntax for i=1:100
Some Matlab Commands;
end

for i=Index_Array for j=1:3:200


Some Matlab Commands;
Matlab Commands end

end for m=13:-0.2:-21


Some Matlab Commands;
end

for k=[0.1 0.3 -13 12 7 -9.3]


Some Matlab Commands;
end
Control Structures

 While Loop Syntax

Dummy Example
while (condition)
Matlab Commands while ((a>3) & (b==5))
Some Matlab Commands;
end end
Use of M-File
Click to create
a new M-File

• Extension “.m”
• A text file containing script or function or program to run
Use of M-File Save file as Denem430.m

If you include “;” at the


end of each statement,
result will not be shown
immediately
Use of M-File
Writing User Defined Functions

 Functions are m-files which can be executed by


specifying some inputs and supply some desired outputs.
 The code telling the Matlab that an m-file is actually a
function is
function out1=functionname(in1)
function out1=functionname(in1,in2,in3)
function [out1,out2]=functionname(in1,in2)

 You should write this command at the beginning of the


m-file and you should save the m-file with a file name
same as the function name
Writing User Defined Functions
 Examples
 Write a function : out=squarer (A, ind)

 Which takes the square of the input matrix if the input


indicator is equal to 1
 And takes the element by element square of the input
matrix if the input indicator is equal to 2

Same Name
Writing User Defined Functions
 Another function which takes an input array and returns the sum and product
of its elements as outputs

 The function sumprod(.) can be called from command window or an m-file as


Notes:
 “%” is the neglect sign for Matlab (equaivalent
of “//” in C). Anything after it on the same line
is neglected by Matlab compiler.
 Sometimes slowing down the execution is
done deliberately for observation purposes.
You can use the command “pause” for this
purpose
pause %wait until any key
pause(3) %wait 3 seconds
Complex Numbers
 Another function which takes an input array and returns the sum and product
of its elements as outputs

 ≫ z = 2+1.5*j, real(z)
 to get the result

 z=
 2.000+1.500i

 ans =
 2
Variables

>>I = int8(zeros(100)); % Creates an intermediate array


String Arrays:
 Created using single quote delimiter (')
»» str
str == 'Hi
'Hi there,'
there,'
str
str ==
Hi
Hi there,
there,
»» str2
str2 == 'Isn''t
'Isn''t MATLAB
MATLAB great?'
great?'
str2
str2 ==
Isn't
Isn't MATLAB
MATLAB great?
great?
 Each character is a separate matrix element
 (16 bits of memory per character)
str = H i t h e r e , 1x9 vector

 Indexing same as for numeric arrays


»string_array
String Arrays:
Using [ ] operator: »» str
str ='Hi
='Hi there,';
there,'; 1x9 vectors
Each row must be »» str1='Everyone!';
str1='Everyone!';
same length »» new_str=[str,
new_str=[str, '' ',', str1]
str1]
new_str
new_str ==
Row separator: vectors
Hi
Hi there,
there, Everyone!
Everyone! 1x19 vector
semicolon (;)
»» str2
str2 == 'Isn''t
'Isn''t MATLAB
MATLAB great?';
great?';
Column separator: »» new_str2=[new_str;
new_str2=[new_str; str2]
str2]
space / comma (,) new_str2
new_str2 ==
Hi
Hi there,
there, Everyone!
Everyone!
Isn't MATLAB great? 2x19 matrix
Isn't MATLAB great?

For strings of different length:


• STRVCAT »» new_str3
new_str3 == strvcat(str,
strvcat(str, str2)
str2)
• STR2MAT new_str3
new_str3 ==
Hi
Hi there,
there, 2x19 matrix
Isn't
Isn't MATLAB
MATLAB great?
great? (zero padded)

»string_cat
String Arrays:
 String Comparisons
 STRCMP - compare whole strings

 STRNCMP - compare first ‘N’ characters

 FINDSTR - finds substring within a larger


string

 Converting between numeric & string arrays:


 NUM2STR - convert from numeric to string
array
 STR2NUM - convert from string to numeric
array
File I/O : High-level routines:
Use wildcard (*) for
 SAVE & LOAD similar variables
save
save fname
fname
save
save fname
fname xx yy zz
save
save fname
fname data*
data* load
load fname
fname
save
save fname
fname -ascii
-ascii load
load fname
fname xx yy zz
save
save fname
fname -v4
-v4 load
load fname
fname -ascii
-ascii
load
load fname
fname -mat
-mat
load
load fname*
fname*
 Other file formats:
 csvread - comma-separated ASCII
files
 dlmread - general ASCII delimited
files
 textread - read formatted data
Low-level text file I/O:
Writing data to text file:
»» fid
fid == fopen('magic5.txt',
fopen('magic5.txt', 'wt');
'wt');
»» fprintf(fid,
fprintf(fid, '%s\n',
'%s\n', 'This
'This is
is aa magic
magic matrix');
matrix');
»» fprintf(fid,
fprintf(fid, '%i\t%i\t%i\t%i\t%i\n',
'%i\t%i\t%i\t%i\t%i\n', magic(5));
magic(5));
»» fclose(fid);
fclose(fid);

ASCII text file: magic5.txt


This is a magic matrix
17 23 4 10 11
24 5 6 12 18
1 7 13 19 25
8 14 20 21 2
15 16 22 3 9

Reading data from text file: »» fid=fopen('magic5.txt',


fid=fopen('magic5.txt', 'rt');
'rt');
»» title
title == fgetl(fid);
fgetl(fid);
»» [data,count]=fscanf(fid,
[data,count]=fscanf(fid, '%i');
'%i');
»» data
data == reshape(data,
reshape(data, 5,
5, 5);
5);
»help fprintf
»» fclose(fid);
fclose(fid);
Basic Matlab Operations

% This is a comment, it starts with a “%”


clc % Clear command window
clear all % Clear variables in MatLab
y = 5*3 + 2^2; % simple arithmetic
x = [1 2 4 5 6]; % create the vector “x”
x1 = x.^2; % square each element in x
E = sum(abs(x).^2); % Calculate signal energy
P = E/length(x); % Calculate av signal
Basic Matlab Operations

% Calculate av signal power


x2 = x(1:3); % Select first 3 elements in x
z = 1+i; % Create a complex number
a = real(z); % Pick off real part
b = imag(z); % Pick off imaginary part
plot(x); % Plot the vector as a signal
t = 0:0.1:100; % Generate sampled time
x3=exp(-t).*cos(t); % Generate a discrete signal
plot(t, x3, ‘x’);% Plot points
Basic Matlab Operations

%This shows how to save a table in Excel


columnHeader = {'t', 'x3'};
xlswrite('Table_1.xls',columnHeader,'Sheet1','A1');
%Saves the heather in Excel
xlswrite('Table_1.xls',[t; x3]','Sheet1','A2');
%Saves the variables in Excel

%This reads the same table in Excel


excel_data = xlsread('Table_1.xls',);
Questions
Thank You…

You might also like