Introduction to Matlab
Οικονομίδης Δημήτρης
[email protected] http://www.telecom.tuc.gr
Desktop Tools (Matlab v6) • Command Window – type commands
• Workspace – view program variables – clear to clear – double click on a variable to see it in the Array Editor
• Command History – view past commands – save a whole session using diary
• Launch Pad – access tools, demos and documentation
Matlab Files (.m) • Use predefined functions or write your own functions • Reside on the current directory or the search path – add with File/Set Path
• Use the Editor/Debugger to edit, run
Matrices • a vector
x = [1 2 5 1]
x = 1
2
5
• a matrix
1
x = [1 2 3; 5 1 4; 3 2 -1]
x = 1 5 3
• transpose
2 1 2
3 4 -1 y = x.’
y = 1 2 5 1
Matrices • x(i,j) subscription
y=x(2,3) y = 4
y=x(3,:)
• whole row
y = 3
• whole column
y=x(:,2) y = 2 1 2
2
-1
Operators (arithmetic) + * / ^ ‘
addition subtraction multiplication division power complex conjugate transpose
.* ./ .^ .‘
element-by-element mult element-by-element div element-by-element power transpose
Operators (relational, logical) == ~= < <= > >=
equal not equal less than less than or equal greater than greater than or equal
& | ~
AND OR NOT
pi 3.14159265… j imaginary unit, i same as j
1
Generating Vectors from functions •
zeros(M,N)
MxN matrix of zeros
•
ones(M,N)
MxN matrix of ones
•
rand(M,N)
MxN matrix of uniformly distributed random numbers on (0,1)
x = zeros(1,3) x = 0 0 0 x = ones(1,3) x = 1 1 1 x = rand(1,3) x = 0.9501 0.2311
0.6068
Operators [ ] concatenation
x = [ zeros(1,3) ones(1,2) ] x = 0 0 0 1 1
( ) subscription
x = [ 1 3 5 7 9] x = 1 3 5 7 9 y = x(2) y = 3 y = x(2:4) y = 3 5 7
Matlab Graphics
x = 0:pi/100:2*pi; y = sin(x); plot(x,y) xlabel('x = 0:2\pi') ylabel('Sine of x') title('Plot of the Sine Function')
Multiple Graphs t = 0:pi/100:2*pi; y1=sin(t); y2=sin(t+pi/2); plot(t,y1,t,y2) grid on
Multiple Plots t = 0:pi/100:2*pi; y1=sin(t); y2=sin(t+pi/2); subplot(2,2,1) plot(t,y1) subplot(2,2,2) plot(t,y2)
Graph Functions (summary) • • • • • • • • •
plot stem grid xlabel ylabel title subplot figure pause
linear plot discrete plot add grid lines add X-axis label add Y-axis label add graph title divide figure window create new figure window wait for user response
Math Functions • Elementary functions (sin, cos, sqrt, abs, exp, log10, round) – type help elfun
• Advanced functions (bessel, beta, gamma, erf) – type help specfun – type help elmat
Functions function f=myfunction(x,y) f=x+y;
• save it in myfunction.m • call it with y=myfunction(x,y)
Flow Control • if • switch • for • while • continue • break
statement statement loops loops statement statement
if A > B 'greater' elseif A < B 'less' else 'equal' end
for x = 1:10 r(x) = x; end
Miscellaneous • Loading data from a file – load myfile.dat
• Suppressing Output –
x = [1 2 5 1];
Getting Help • Using the Help Browser (.html, .pdf) – View getstart.pdf, graphg.pdf, using_ml.pdf
• Type – help – help function, e.g. help plot
• Running demos – type demos – type help demos
Random Numbers x=rand(100,1); stem(x);
hist(x,100)
Coin Tosses • Simulate the outcomes of 100 fair coin tosses x=rand(100,1); p=sum(x<0.5)/100 p = 0.5400
• Simulate the outcomes of 1000 fair coin tosses x=rand(1000,1); p=sum(x<0.5)/1000 p = 0.5110
Coin Tosses • Simulate the outcomes of 1000 biased coin tosses with p[Head]=0.4 x=rand(1000,1); p=sum(x<0.4)/1000 p = 0.4160
Sum of Two Dies • Simulate 10000 observations of the sum of two fair dies
6 5 4
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
1
2
3
4
5
6
(1,6) (2,6) (3,6) (4,6) (5,6) (6,6) (1,5) (2,5) (3,5) (4,5) (5,5) (6,5) (1,4) (2,4) (3,4) (4,4) (5,4) (6,4)
3 2
(1,3) (2,3) (3,3) (4,3) (5,3) (6,3) (1,2) (2,2) (3,2) (4,2) (5,2) (6,2)
1
(1,1) (2,1) (3,1) (4,1) (5,1) (6,1)
Sum of Two Dies • Simulate 10000 observations of the sum of two fair dies x1=floor(6*rand(10000,1)+1); x2=floor(6*rand(10000,1)+1); y=x1+x2; sum(y==2)/10000 ans = 0.0275 sum(y==3)/10000 ans = 0.0554 sum(y==4)/10000 ans = 0.0841 sum(y==5)/10000 ans = 0.1082 sum(y==6)/10000 ans = 0.1397 sum(y==7)/10000 ans = 0.1705 sum(y==8)/10000 ans = 0.1407 sum(y==9)/10000 ans = 0.1095 sum(y==10)/10000 ans = 0.0794 sum(y==11)/10000 ans = 0.0585 sum(y==12)/10000 ans = 0.0265
p[2]=0.0278 p[3]=0.0556 p[4]=0.0833 p[5]=0.1111 p[6]=0.1389 p[7]=0.1667 p[8]=0.1389 p[9]=0.1111 p[10]=0.0833 p[11]=0.0556 p[12]=0.0278
Sum of Two Dies for i=2:12 z(i)=sum(y==i)/10000 end bar(z)
Bernoulli Trials-Binomial Distribution æö n÷ k n- k p(k ) = ç p (1 p ) , ç÷ ÷ ÷ ç èk ø
k = 0,1,..., n
k=0:20; y=binopdf(k,20,0.5); stem(k,y)
n = 20
p = 0.5
Bernoulli
1720
k=0:20; y=binopdf(k,20,0.2); stem(k,y)
n = 20
p = 0.1
Combinatorics • Permutations:
n objects
• Permutations:
choose k objects from n
n!
Pkn =
(hint: fill 2 spaces on a bookshelf with books chosen from 5 available books)
• Combinations:
choose k objects from n without æö n÷ ç regard to the order ÷= ç ç÷
(hint: make a committee of 2 people chosen from a group of 5 people)
æö n÷ æ n ö ÷ ç ç ÷ =ç ç÷ ÷ ÷ ÷ ç ç èk ø èn - k ÷ ø
n! ( n - k )!
æö n÷ æö n÷ n ! ç ç ÷ = = =1 ç÷ ç÷ ÷ ÷ ÷ ç ç è0ø ènø 0!n !
n! ç èk ÷ ø k !(n - k )!
æö n÷ æ n ö n! ÷ ç ç ÷ ÷ = = =n ç÷ ç ÷ ÷ ÷ ç ç è1ø èn - 1ø 1!(n - 1)!