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 1]
a matrix
x = 1 5 3 2 1 2
x = [1 2 3; 5 1 4; 3 2 -1]
3 4 -1 y = x. y = 1 2 5 1
transpose
Matrices
x(i,j) subscription
y=x(2,3)
y = 4
y=x(3,:)
whole row
y = 3 2 -1
whole column
y=x(:,2) y = 2 1 2
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)
pi 3.14159265 j imaginary unit, i same as j
== ~= < <= > >= & | ~
equal not equal less than less than or equal greater than greater than or equal AND OR NOT
Generating Vectors from functions
zeros(M,N) MxN matrix of zeros
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
ones(M,N)
MxN matrix of ones
rand(M,N)
MxN matrix of uniformly distributed random numbers on (0,1)
0.6068
Operators
x = [ zeros(1,3) ones(1,2) ] x = 0 0 0 1 1
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
[ ] concatenation
( ) subscription
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
statement statement
loops loops statement statement
while
continue
if A > B 'greater' elseif A < B 'less' else 'equal' end
break
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 3 2 1
(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) (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) (2,1) (3,1) (4,1) (5,1) (6,1) 1 2 3 4 5 6
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
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
Bernoulli
1720
k=0:20; y=binopdf(k,20,0.5); stem(k,y)
k=0:20; y=binopdf(k,20,0.2); stem(k,y)
n = 20
p = 0.5
n = 20
p = 0.1
Combinatorics
Permutations:
Permutations:
n objects
choose k objects from n
Pkn =
n!
n! (n - k )!
(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 =
k
n! k !(n - k )!
(hint: make a committee of 2 people chosen from a group of 5 people)
n = k
n n - k
n = 0
n n! = =1 n 0!n !
n = 1
n n! = = n n - 1 1!(n - 1)!