Introducere in Matlab PDF
Introducere in Matlab PDF
Continut:
Ce este Matlab?
Ecranul Matlab
Variabile, vectori, matrice, indecsi
Operatori (Aritmetic, relational, logic )
Facilitati afisare
Controlul fluxului
Utilizarea fisierelor M
Functii definite de utilizator
Concluzii
Ce este Matlab?
Matlab este un limbaj de nivel inalt ce are
numeroase colectii de unelte pentru a facilita
lucrul utilizatorului
Cat de inalt?
Matlab
High Level
Languages such as
C, Pascal etc.
Assembly
Ce ne intereseaza?
Matlab este o unealta ampla, dar la acest
curs il vom folosi numai in mica parte.
Functionalitatile ce ne sunt necesare sunt:
Matlab
Series of
Matlab
commands
m-files
functions
Input
Output
capability
Command
Line
Command execution
like DOS command
window
mat-files
Data
storage/
loading
Ecranul Matlab
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
Variabile
Nu necesita declaratii explicite de tip. i.e.,
int a;
double b;
float c;
Vectori, Matrice
un vector
x = [1 2 5 1]
x =
1
o matrice
x = [1 2 3; 5 1 4; 3 2 -1]
x =
1
5
3
transpusa
2
1
2
3
4
-1
y = x
y =
1
2
5
1
Sir, Matrice
t =1:10
t =
k =2:-0.5:-1
k =
1.5
0.5
= [1:4; 5:8]
x =
1
5
2
6
3
7
4
8
-0.5
-1
10
ones(M,N)
rand(M,N)
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
Indexarea matricelor
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.
Concatenarea Matricelor
x = [1 2], y = [4 5], z=[ 0 0]
A = [ x y]
1
B = [x ; y]
1 2
4 5
C = [x y ;z]
Error:
??? Error using ==> vertcat CAT arguments dimensions are not consistent.
Operatori (aritmetici)
+
*
/
^
addition
subtraction
multiplication
division
power
complex conjugate transpose
Operatii cu matrice
Given A and B:
Addition
Subtraction
Product
Transpose
.* element-by-element multiplication
./ element-by-element division
.^ element-by-element power
x = A(1,:)
x=
c=x./y
d = x .^2
b=
c=
0.33 0.5 -3
d=
y = A(: ,3)
y=
1 2 3
b = x .* y
3 8 -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.
HELP in Matlab
Functia in linie de comanda help
Documentatia cuprinzatoare in format HTML
Documentatia online
Exemplu:
help tan
TAN Tangent of argument in radians.
TAN(X) is the tangent of the elements of X.
See also atan, tand, atan2.
doc tan
Functii de rotunjire
Round(x) rotunjeste pana la cel mai apropiat intreg
Fix(x) rotunjeste prin scadere (trunchiaza) pana la
cel mai apropiat intreg (in cazul numerelor pozitive).
In cazul numerelor negative, rotunjeste prin adaos.
Ex. Round(8.6) = 9; round(-8.6) = -9
Fix(8.6) = 8; fix(-8.6) = -8
Floor(x) rotunjeste prin scadere pana la cel mai
apropiat intreg
Ceil(x) rotunjeste prin adaos la cel mai apropiat
intreg
Ex. Floor(-8.6) = -9; ceil (-8.6) = -8
Alte exemple
factor(x) factorizarea numarului x in factori primi
12 = 2x2x3= 22 x 3
In matlab: factor(x)
Ans= 2 2 3
gcd(x, y) cel mai mare divizor comun
Gcd(10,15)
Ans = 5
lcm (x, y) cel mai mic multiplu comun
rats(x) reprezinta x ca o fractie
nchoosek(n,k) combinari de n luate cate k
Permutari
123
132
213
231
312
321
3!
Functii trigonometrice
Problema
Sa se gaseasca rezultanta unui grup de forte
ce actioneaza aspra unui balon cu aer
Gravitatie
Forta
vantului
Flotabilitate
F forta totala
Fx - forta pe axa X
Fy - forta pe axa Y
Problema(2)
Suma fortelor pe fiecare axa
Problema(3)
Modulul rezultantei
G = 100N
F = 200N
V =50N
Problema(6)
Rezolvarea in Matlab
if (Conditie_1)
Comenzi Matlab
elseif (Conditie_2)
Comenzi Matlab
elseif (Conditie_3)
Comenzi Matlab
else
Comenzi Matlab
end
IF simplu
if (Conditie)
Comenzi Matlab
else
Comenzi Matlab
end
adevarat
conditie
Grup de instructiuni 1
fals
Grup de instructiuni 2
IF-ELSEIF-ELSE
if (Conditie_1)
Comenzi Matlab
elseif (Conditie_2)
Comenzi Matlab
else
Comenzi Matlab
end
tru
e
conditie
1
Grup de
Instructiuni 1
tru
e
false
conditie
2
Grup de
Instructiuni 2
false
Grup de
instructiuni 3
statement
group 2
statement
group 1
statement
group 2
Exemplu
Exemplu: numere pare si impare
switch (valoare),
case {1,3,5,7,9},
disp( Numar impar );
case {2,4,6,8,10},
disp( Numar par );
otherwise,
disp( In afara intervalului );
end
Bucle
Buclele sunt utilizate pentru a executa o
secventa de instructiuni de mai multe ori
Vom studia:
bucla while
bucla for
conditie
true
grup de
instructiuni
false
Instructiunile sunt
executate repetitiv cat
timp conditia este
indeplinita
while ( condition ),
statement 1
statement 2
...
grup de
end
instructiuni
Exemple
Exemplu: Media aritmetica si deviatia standard a unui set de
masuratori pozitive
Pseudocod:
Exemplu in Matlab
% Initializeaza sumele.
n = 0; sum_x = 0; sum_x2 = 0;
% Citeste prima valoarea
x = input(Introduceti prima valoare: ');
% Bucla While pentru a citi intrarile.
while x >= 0
% Acumuleaza sumele.
n
= n + 1;
sum_x = sum_x + x;
sum_x2 = sum_x2 + x^2;
% Citeste urmatoarea valoare
x = input(Introduceti urmatoarea valoare:
');
end
% Calculeaza media si deviatia standard
x_bar = sum_x / n;
std_dev = sqrt( (n * sum_x2 - sum_x^2) / (n * (n-1)) );
% Afiseaza rezultatele.
fprintf(Media acestui set de date este: %f\n', x_bar);
fprintf(Deviatia standard este:
%f\n', std_dev);
fprintf(Numarul de valori este: %f\n', n);
Exemple
Exemplu:
Output:
for x = [ 1 5 13 ],
x
end
x=
1
x=
5
x=
13
Exemple
Exemplu:
Output:
for x = [ 1 2 3; 4 5 6 ],
x
end
x=
1
4
x=
2
5
x=
3
6
Exemple
Factorialul (n!) unui numar intreg n
n = input( Introduceti n: );
if ( ( n < 0 ) | ( fix(n) ~= n ) ),
error( n trebuie sa fie un intreg pozitiv );
end
if ( ( n == 0 ) | ( n == 1 ) ),
f = 1;
else
f = 1;
for ii = 2:n,
f = f * ii;
end
end
Exemplu
Exemplu: Media aritmetica si deviatia standard a unui set de
masuratori pozitive
Pseudocod:
Exemplul in Matlab
% Intializare sume
sum_x = 0; sum_x2 = 0;
% Numarul de valori.
n = input(Introduceti numarul de valori: ');
% Verficam daca sunt date suficiente.
if n < 2
% Date insuficiente
disp (Trebuie sa introduceti cel putin 2 valori.');
else % Avem valori suficiente.
% Bucla in care se citesc valorile.
for ii = 1:n
% Citeste urmatoarea valoare
x = input(Introduceti valoarea:
% Acumuleaza sumele.
sum_x = sum_x + x;
sum_x2 = sum_x2 + x^2;
end
');
end
Alte exemple
Ghicirea unui numar ales de calculator intre 1
si 100
Pseudocod:
Alege un numar la intamplare, num, in [1,100]
Citeste presupunerea utilizatorului
while ( guess ~= num )
Informeaza utilizatorul daca presupunerea este mai
mica sau mai mare decat numarul ales
Citeste noua presupunere
end
Codul Matlab
num = round( (10-1) * rand + 1 );
guess = input( Numarul ghicit?' );
tries = 1;
while ( guess ~= num ),
guess = input( Numarul ghicit?' );
tries = tries + 1;
end
fprintf( Ati ghicit corect in %d incercari', tries );
end
In Matlab
num = round( (10-1) * rand + 1 );
guess = input( Numarul ghicit?' );
tries = 1;
while ( ( guess ~= num ) & ( tries < 3 ) ),
guess = input( Numarul ghicit?' );
tries = tries + 1;
end
if ( guess == num ),
disp( Felicitari, ati ghicit!' );
else
disp( N-ati ghicit!' );
end
a = 0; fa = -Inf;
b = 3; fb = Inf;
while b-a > eps*b
x = (a+b)/2;
fx = x^3-2*x-5;
if fx == 0
break
elseif sign(fx) == sign(fa)
a = x; fa = fx;
else
b = x; fb = fx;
end
end
x
Recomandari
Folositi indentatia pentru a imbunatati lizibilitatea
codului
Nu modificati niciodata valoarea indexului de bucla
in interiorul buclei
Atribuiti valori tuturor vectorilor utilizati intr-o bucla
inainte de a executa bucla
Daca se poate implementa un calcul fie printr-o
bucla, fie folosind vectori, utilizati intotdeauna vectori
Utilizati cu precadere functii Matlab predefinite in
defavoarea reimplementarii lor
Utilizarea fisierelor M
Click to create
a new M-File
Extension .m
A text file containing script or function or program to run
Utilizarea fisierelor M
Acelasi nume
Note:
% este semnul de comentariu in Matlab
(echivalent cu // in C). Orice altceva se
regaseste pe aceeasi linie este neglijat de
compilatorul Matlab.
Uneori intarziere executiei unui program este
intarziata in mod deliberat pentru a observa
unele rezultate. Se foloseste comanda
pause pentru acesta
pause %asteapta pana se apasa o tasta
pause(3) %asteapta 3 secunde
Grafice
0.7
0.6
plot(.)
0.5
0.4
0.3
Example:
>>x=linspace(0,4*pi,100);
>>y=sin(x);
>>plot(y)
>>plot(x,y)
stem(.)
0.2
0.1
0
-0.1
-0.2
-0.3
10
20
30
40
50
60
70
80
90
100
10
20
30
40
50
60
70
80
90
100
0.7
0.6
0.5
0.4
0.3
Example:
>>stem(y)
>>stem(x,y)
0.2
0.1
0
-0.1
-0.2
-0.3
Grafice
title(.)
This is the sinus function
1
0.8
xlabel(.)
0.6
0.4
ylabel(.)
0.2
sin(x)
>>xlabel(x (secs))
0
-0.2
-0.4
-0.6
>>ylabel(sin(x))
-0.8
-1
10
20
30
40
50
60
x (secs)
70
80
90
100
>>y=sin(x);
0.4
0.2
0
Realizarea graficului
-0.2
-0.4
-0.6
>>plot(y)
-0.8
-1
10
20
30
40
50
60
70
80
90
100
functia sin
>>y1=exp(-x/3);
Calculate
e-x/3 of the functia exponentiala
>>y2=y*y1;
0.7
0.6
0.5
0.4
0.3
0.2
>>plot(y2)
0.1
0
-0.1
-0.2
-0.3
10
20
30
40
50
60
70
80
90
100
Comenzi utile
Comenzi pentru a invoca ajutorul in Matlab
>>help numedefunctie
>>lookfor cuvantcheie