Documente Academic
Documente Profesional
Documente Cultură
Anul I, AR+ITT
Clasa booleană (logică) este reprezentată printr-o stare true sau false folosind numerele 1, respectiv 0.
Anumite funcţii şi operatori MATLAB returnează valori logice true sau false pentru a indica dacă o anumită
condiţie a fost evaluată la o valoare adevărată sau nu. De exemplu, expresia 50>40 returnează o valoare logică
true.
MATLAB suportă şi tablouri de valori logice. De exemplu, următoarea instrucţiune returnează un vector de valori
logice:
Funcţiile MATLAB ale căror nume încep cu is (de exemplu ischar, issparse), returnează valori sau tablouri
logice.
1|Page
Conf.dr.ing. Ovidiu-Aurelian Deteşan – Programare si limbaje I Curs 7. Clase Matlab
Funcţie de conversie: logical()
Sintaxă:
K = logical(A)
Descriere:
K = logical(A) returnează un tablou care poate fi folosit pentru indexare logică sau teste logice.
A(B), unde B este un tablou logic de aceleaşi dimensiuni cu A, returnează valorile lui A situate la coordonatele în
care partea reală a lui B este diferită de zero.
A(B), unde B este un tablou logic de dimensiuni mai mici decât A, returnează valorile vectorului coloană A(:)
situate la coordonatele în care partea reală a vectorului coloană B(:) este diferită de zero.
Observaţii:
Majoritatea operaţiilor aritmetice elimină caracterul logic al unui tablou. De exemplu, adunarea unei constante
zero la un tablou logic îi elimină caracteristicile logice.
A = +A este cel mai simplu mod de a converti un tablou logic, A, la un tablou numeric în dublă precizie.
Tablourile logice sunt create, de asemenea, folosind operatorii relaţionali (==,<,>,~=, etc.) şi funcţii precum any,
all, isnan, isinf, sau isfinite.
Exemple:
MATLAB reprezintă numerele reale în virgulă flotantă fie în formatul simplă precizie, fie în formatul dublă precizie.
Formatul implicit este în dublă precizie.
Sintaxă:
B = single(A)
Descriere:
Exemple:
>>a = magic(4);
>>b = single(a);
>>whos
Name Size Bytes Class
Sintaxă:
double(x)
Descriere:
v = realmin
v = realmin ('classname')
v = realmax
v = realmax('classname')
Exemple:
>> realmin('single')
ans =
1.1755e-038
3|Page
Conf.dr.ing. Ovidiu-Aurelian Deteşan – Programare si limbaje I Curs 7. Clase Matlab
echivalent cu 2^(-126)
>> realmin('double')
ans =
2.2251e-308
echivalent cu 2^(-1022).
>> realmax('single')
ans =
3.4028e+038
echivalent cu 2^(127)
>> realmax('double')
ans =
1.7977e+308
echivalent cu 2^(1023).
int8
int16
int32
int64
Forma generală:
I = int8(X)
I = int16(X)
I = int32(X)
I = int64(X)
Efect: convertesc elementele tabloului X în întregi cu semn. X poate fi orice obiect de tip numeric.
uint8
uint16
uint32
uint64
4|Page
Conf.dr.ing. Ovidiu-Aurelian Deteşan – Programare si limbaje I Curs 7. Clase Matlab
Forma generală:
I = uint8(X)
I = uint16(X)
I = uint32(X)
I = uint64(X)
Efect: convertesc elementele tabloului X în întregi fără semn. X poate fi orice obiect de tip numeric.
v = intmin
v = intmin('classname')
v = intmax
v = intmax('classname')
Exemple:
>> intmin('int8')
ans =
-128
>> intmin('int16')
ans =
-32768
>> intmin('int32')
ans =
-2147483648
>> intmin('int64')
ans =
-9223372036854775808
>> intmin('uint64')
ans =
0
>> intmax('int8')
ans =
127
>> intmax('int16')
ans =
32767
>> intmax('int32')
ans =
2147483647
>> intmax('int64')
5|Page
Conf.dr.ing. Ovidiu-Aurelian Deteşan – Programare si limbaje I Curs 7. Clase Matlab
ans =
9223372036854775807
>> intmax('uint8')
ans =
255
>> intmax('uint16')
ans =
65535
>> intmax('uint32')
ans =
4294967295
>> intmax('uint64')
ans =
18446744073709551615
Un caracter în MATLAB este reprezentat printr-un întreg convertit în caracterul Unicode echivalent.
Un șir de caractere: vector cu componente numerice, reprezentând caractere.
Caracterele sau șirurile de caractere aparțin clasei char.
>>hChar = 'h'
>>whos hChar
Name Size Bytes Class Attributes
>>uint8(hChar)
ans =
104
>>str = 'Hello';
>>whos str
Name Size Bytes Class Attributes
>>str_numeric = uint8(str)
str_numeric =
72 101 108 108 111
>> str_alpha = char([72 101 108 108 111])
str_alpha =
Hello
Se folosește constructorul de tablouri ([]), liniile se delimitează prin (;), iar matricea trebuie să fie dreptunghiulară,
adică fiecare linie să conțină același număr de elemente. În cazul în care șirurile de caractere nu au aceeași
lungime, se vor adăuga spații la sfârșit.
Exemplu:
O altă modalitate de creare a tablourilor de șiruri de caractere este utilizarea funcției char().
Concatenarea orizontală creează un șir de caractere format din șirurile inițiale, plus eventual unul sau mai mulți
separatori:
Concatenarea verticală produce o matrice de caractere. În acest caz, șirurile de caractere inițiale trebuie să aibă
aceeași lungime:
Sintaxă:
h = @numefunctie
Exemplu:
>> media=@mean
media =
@mean
>> media([1 3 5 7 9 11.25])
ans =
7|Page
Conf.dr.ing. Ovidiu-Aurelian Deteşan – Programare si limbaje I Curs 7. Clase Matlab
6.0417
A fost creat astfel un „alias” al funcției mean(), care poate fi folosit în locul funcției „manipulate”.
>> patrat(5)
ans =
25
>> functions(media)
ans =
function: 'mean'
type: 'simple'
file: 'C:\Program Files\MATLAB\R2008b\toolbox\matlab\datafun\mean.m'
>> functions(patrat)
ans =
function: '@(x)x^2'
type: 'anonymous'
file: ''
workspace: {[1x1 struct]}
Structurile sunt tablouri MATLAB care conțin câmpuri. Aceste câmpuri pot conține date de orice tip. De exemplu,
o structura auto poate conține următoarele câmpuri:
>> auto.marca='Nissan';
>> auto.model='DeltaWing';
>> auto.an_fabricatie=2012;
>> auto.cap_cilindrica=1600;
>> auto.culoare='silver';
>> auto.putere=300
auto =
marca: 'Nissan'
model: 'DeltaWing'
an_fabricatie: 2012
cap_cilindrica: 1600
culoare: 'silver'
8|Page
Conf.dr.ing. Ovidiu-Aurelian Deteşan – Programare si limbaje I Curs 7. Clase Matlab
putere: 300
Dacă se dorește introducerea mai multor modele auto, se vor folosi indici după numele structurii:
>> auto(2).marca='Porsche';
>> auto(2).model='911 Turbo Cabrio';
>> auto(2).an_fabricatie=2010;
>> auto(2).cap_cilindrica=3800;
>> auto(2).culoare='alb';
>> auto(2).putere=480
auto =
1x2 struct array with fields:
marca
model
an_fabricatie
cap_cilindrica
culoare
putere
>> size(auto)
ans =
1 2
Dacă se dorește afișarea caracteristicilor unui autoturism, numele structurii se va indexa cu numărul de ordine al
elementului din tabloul de structuri:
>> auto(1)
ans =
marca: 'Nissan'
model: 'DeltaWing'
an_fabricatie: 2012
cap_cilindrica: 1600
culoare: 'silver'
putere: 300
>> auto(2)
ans =
marca: 'Porsche'
model: '911 Turbo Cabrio'
an_fabricatie: 2010
cap_cilindrica: 3800
culoare: 'alb'
putere: 480
Accesarea câmpului putere corespunzător primului autoturism și a câmpului model corespunzător celui de al
doilea autoturism, se face astfel:
>> auto(1).putere
ans =
300
>> auto(2).model
ans =
911 Turbo Cabrio
Crearea tablourilor de tip structură folosind funcția struct(). Se folosește următoarea formă generală:
unde field1... reprezintă câmpurile, iar val1... valorile. Întotdeauna se folosesc perechi de câmpuri și valori.
Exemplu: crearea unei structuri similare celei precedente, având numele autoStr:
Un tablou de celule reprezintă o formă de memorare a datelor de tipuri și dimensiuni diferite (eterogene), în
aceeași structură de tip tablou. Pentru accesarea elementelor se folosește același mod ca și în cazul tablourilor
obișnuite (omogene), cu diferența că în loc de paranteze pătrate se vor folosi acolade.
>> Tablou_celule{1}
ans =
8 1 6
3 5 7
4 9 2
>> Tablou_celule{2}
ans =
3.0000 + 7.0000i
>> Tablou_celule{3}
ans =
Toyota Avalon
>> Tablou_celule{4}
ans =
Columns 1 through 8
-3.1416 -2.8798 -2.6180 -2.3562 -2.0944 -1.8326 -1.5708 -1.3090
Columns 9 through 16
-1.0472 -0.7854 -0.5236 -0.2618 0 0.2618 0.5236 0.7854
Columns 17 through 24
1.0472 1.3090 1.5708 1.8326 2.0944 2.3562 2.6180 2.8798
Column 25
3.1416
>> Tablou_celule{1}(3,2)
ans =
9
>> Tablou_celule{3}(3)
ans =
y
10 | P a g e
Conf.dr.ing. Ovidiu-Aurelian Deteşan – Programare si limbaje I Curs 7. Clase Matlab
>> cellplot(Tablou_celule,'legend')
Fig. 7.2 Afișarea structurii grafice a unui tablou de celule folosind funcţia cellplot()
exp Exponenţială
expm1 Calculează exp(x)-1 cu precizie mare, pentru valori mici ale lui x
log Logaritm natural
log10 Logaritm în baza 10
log1p Calculează log(1+x) cu precizie mare, pentru valori mici ale lui x
nextpow2 Următoarea putere mare a lui 2
nthroot Rădăcină reală de ordinul n din numere reale
reallog Logaritm natural pentru tablouri de numere reale nenegative
realsqrt Rădăcină pătrată pentru tablouri de numere reale nenegative
sqrt Rădăcină pătrată.
12 | P a g e