Sunteți pe pagina 1din 9

1 | P a g e

Programare si limbaje II
Anul I, AR+ITT

1 Recapitulare

Curs 2 + Laborator 3 + Laborator 4

1.1 Operatori

1.2 Comenzi

diary
save
load

1.3 Variabile

1.4 Constante

true
false

1.5 Funcii

logical()
ischar()
isnan()
isinf()
isfinite()
single()
double()
size()
zeros()
ones()
eye()
rand()
randn()
diag()
magic()
sparse()
full()
spy()
speye()
spones()
issparse()
nnz()
round()
triu()
tril()
repmat()
find()
isprime()
mean()
geomean()
nonzeros()
det()
inv()



Conf.dr.ing. Ovidiu-Aurelian Detean Programare si limbaje II Curs 3. Clase Matlab
2 | P a g e
Curs 3. Clase MATLAB (2)


2.1 Clase Matlab (reluare)

Tipuri de date = clase (n Matlab).
Exist 15 clase fundamentale, fiecare putnd alctui matrice sau tablouri.
Dimensiunea minim: 0x0.
Dimensiunea maxim: tablouri n-dimensionale de orice mrime.
Clasele Matlab fundamentale:



Fig. 2.1 Clasele Matlab de baz
...

2.1.2 Clasele numerice

2.1.2.1 Clasele numerice n virgul flotant
...

2.1.2.2 Clasele numerice ntregi

Clasele numerice ntregi cu semn (signed)

int8

int16

int32

int64

Funcii de conversie: 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 fr semn. X poate fi orice obiect de tip numeric.

Conf.dr.ing. Ovidiu-Aurelian Detean Programare si limbaje II Curs 3. Clase Matlab
3 | P a g e
Tab 2.3 Funcii de conversie spre tipuri ntregi cu semn
Funcie Domeniu Tip Octei pe element Clas
int8()
-128 127 ntreg cu semn, pe 8 bii 1
int8
int16()
-32,768 32,767 ntreg cu semn, pe 16 bii 2
int16
int32()
-2,147,483,648 2,147,483,647 ntreg cu semn, pe 32 bii 4
int32
int64()
-9,223,372,036,854,775,808
9,223,372,036,854,775,807
ntreg cu semn, pe 64 bii 8
int64

Clasele numerice ntregi fr semn (unsigned)

uint8

uint16

uint32

uint64

Funcii de conversie: uint8(), uint16(), uint32(), uint64()

Forma general:
I = uint8(X)
I = uint16(X)
I = uint32(X)
I = uint64(X)

Efect: convertesc elementele tabloului X n ntregi fr semn. X poate fi orice obiect de tip numeric.

Tab 2.4 Funcii de conversie spre tipuri ntregi fr semn
Funcie Domeniu Tip Octei pe element Clas
uint8()
0 255 ntreg fr semn, pe 8 bii 1
uint8
uint16()
0 65,535 ntreg fr semn, pe 16 bii 2
uint16
uint32()
0 4,294,967,295 ntreg fr semn, pe 32 bii 4
uint32
uint64()
0 18,446,744,073,709,551,615 ntreg fr semn, pe 64 bii 8
uint64

Funcii de determinare a domeniului de reprezentare

v = intmin
v = intmin('classname')

v = intmax
v = intmax('classname')

Exemple:

- determinarea limitelor minime pentru clasele ntregi cu semn:

>> intmin('int8')
ans =
-128
>> intmin('int16')
ans =
-32768
>> intmin('int32')
ans =
-2147483648
>> intmin('int64')
ans =
-9223372036854775808

- determinarea limitelor minime pentru clasele ntregi fr semn:

Conf.dr.ing. Ovidiu-Aurelian Detean Programare si limbaje II Curs 3. Clase Matlab
4 | P a g e
>> intmin('uint64')
ans =
0

Observaie. Toate clasele uint* au valoarea minim zero.

- determinarea limitelor maxime pentru clasele ntregi cu semn:

>> intmax('int8')
ans =
127
>> intmax('int16')
ans =
32767
>> intmax('int32')
ans =
2147483647
>> intmax('int64')
ans =
9223372036854775807

- determinarea limitelor maxime pentru clasele ntregi cu semn:

>> intmax('uint8')
ans =
255
>> intmax('uint16')
ans =
65535
>> intmax('uint32')
ans =
4294967295
>> intmax('uint64')
ans =
18446744073709551615

2.1.3 Clasa text (char)

Un caracter n MATLAB este reprezentat printr-un ntreg convertit n caracterul Unicode echivalent.
Un ir de caractere: vector cu componente numerice, reprezentnd caractere.
Caracterele sau irurile de caractere aparin clasei char.

2.1.3.1 Crearea unui singur caracter

>>hChar = 'h'
>>whos hChar
Name Size Bytes Class Attributes

hChar 1x1 2 char

Valoarea numeric a lui hChar este:

>>uint8(hChar)
ans =
104

2.1.3.2 Crearea unui ir de caractere

>>str = 'Hello';
>>whos str
Name Size Bytes Class Attributes

str 1x5 10 char

>>str_numeric = uint8(str)
Conf.dr.ing. Ovidiu-Aurelian Detean Programare si limbaje II Curs 3. Clase Matlab
5 | P a g e
str_numeric =
72 101 108 108 111
>> str_alpha = char([72 101 108 108 111])
str_alpha =
Hello

2.1.3.3 Crearea unui tablou de iruri de caractere

Se folosete constructorul de tablouri ([]), liniile se delimiteaz prin (;), iar matricea trebuie s fie dreptunghiular,
adic fiecare linie s conin acelai numr de elemente. n cazul n care irurile de caractere nu au aceeai
lungime, se vor aduga spaii la sfarit.

Exemplu:

>> persoana=['Pop Ion ';...
'Asistent universitar';...
'UTCN ']
persoana =
Pop Ion
Asistent universitar
UTCN

O alt modalitate de creare a tablourilor de iruri de caractere este utilizarea funciei char().

>> pers_char=char('Pop Ion','Asistent universitar','UTCN')
pers_char =
Pop Ion
Asistent universitar
UTCN

Crearea tablourilor de iruri de caractere prin concatenare:

>> nume='Pop Ion '
nume =
Pop Ion
>> functie='Asistent universitar'
functie =
Asistent universitar
>> angajator='UTCN '
angajator =
UTCN

Concatenarea orizontal creeaz un ir de caractere format din irurile iniiale, plus eventual unul sau mai muli
separatori:

>> pers_horiz=[nume, ',', functie, ',', angajator]
pers_horiz =
Pop Ion ,Asistent universitar,UTCN
>> pers_horiz=['|', nume,'|', ',','|', functie,'|', ',', angajator,'|']
pers_horiz =
|Pop Ion |,|Asistent universitar|,UTCN |

Concatenarea vertical o matrice de caractere. n acest caz, irurile de caractere iniiale trebuie s aib aceeai
lungime:

>> pers_vert=[nume; functie; angajator]
pers_vert =
Pop Ion
Asistent universitar
UTCN

2.1.4 Clasa manipulator de funcie (function_handle)

Manipulatorul de funcie este o asociere apelabil, cu o funcie MATLAB.
Conf.dr.ing. Ovidiu-Aurelian Detean Programare si limbaje II Curs 3. Clase Matlab
6 | P a g e

2.1.4.1 Crearea unui manipulator de funcie

Sintax:

h = @numefunctie

unde h este variabila care va memora manipulatorul de funcie.

Exemplu:

>> media=@mean
media =
@mean
>> media([1 3 5 7 9 11.25])
ans =
6.0417

A fost creat astfel un alias al funciei mean(), care poate fi folosit n locul funciei manipulate.

2.1.4.2 Manipularea unei funcii anonime

Manipulatoarele de funcii pot servi i la apelarea funciilor anonime. De exemplu, instruciunea:

>> patrat = @(x) x^2
patrat =
@(x)x^2

creeaz o funcie anonim care calculeaz ptratul valorii primite ca i parametru:

>> patrat(5)
ans =
25

2.1.4.3 Obinerea de informaii despre un manipulator de funcie

Funcia functions() returneaz informaii despre un manipulator de funcie. n legtur cu manipulatoarele
definite anterior, se obin urmtoarele informaii:

>> 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]}

2.1.5 Clasele container eterogen

2.1.5.1 Clasa container eterogen bazat pe nume (struct)

Structurile sunt tablouri MATLAB care conin cmpuri. Aceste cmpuri pot conine date de orice tip. De exemplu,
o structura auto poate conine urmtoarele cmpuri:

auto --> marca
model
an_fabricatie
cap_cilindrica
Conf.dr.ing. Ovidiu-Aurelian Detean Programare si limbaje II Curs 3. Clase Matlab
7 | P a g e
culoare
putere

Crearea tablourilor de tip structur folosind instruciunea de atribuire:

>> 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'
putere: 300

Dac se dorete 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

Dimensiunea tabloului de tip structur

>> size(auto)
ans =
1 2

Dac se dorete afiarea caracteristicilor unui autoturism, numele structurii se va indexa cu numrul 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 cmpului putere corespunztor primului autoturism i a cmpului model corespunztor celui de al
doilea autoturism, se face astfel:

Conf.dr.ing. Ovidiu-Aurelian Detean Programare si limbaje II Curs 3. Clase Matlab
8 | P a g e
>> auto(1).putere
ans =
300
>> auto(2).model
ans =
911 Turbo Cabrio

Crearea tablourilor de tip structur folosind funcia struct(). Se folosete urmtoarea form general:

strArray = struct('field1',val1,'field2',val2, ...)

unde field1... reprezint cmpurile, iar val1... valorile. ntotdeauna se folosesc perechi de cmpuri i valori.

Exemplu: crearea unei structuri similare celei precedente, avnd numele autoStr:

>> autoStr=struct('marca', 'Mercedes', 'model', 'SLR McLaren Roadster 722 S',...
'an_fabricatie', 2010, 'cap_cilindrica', 5439, 'culoare', 'gri', 'putere', 625 )
autoStr =
marca: 'Mercedes'
model: 'SLR McLaren Roadster 722 S'
an_fabricatie: 2010
cap_cilindrica: 5439
culoare: 'gri'
putere: 625

2.1.5.2 Clasa container eterogen indexat (cell)

Un tablou de celule reprezint o form de memorare a datelor de tipuri i dimensiuni diferite (eterogene), n
aceeai structur de tip tablou. Pentru accesarea elementelor se folosete acelai mod ca i n cazul tablourilor
obinuite (omogene), cu diferena c n loc de paranteze ptrate se vor folosi acolade.

Tab 2.5 Operatorii utilizai la construcia, concatenarea i indexarea tablourilor de celule
Operaie Sintax Descriere
Construcie
C = {A B D E}
Construiete tabloul de celule C care poate conine date eterogene, din
variabilele A, B, D, i E
Concatenare
C3 = {C1 C2}
Concateneaz tablourile de celule C1 i C2 ntr-un tablou de celule cu 2
elemente, C3, astfel nct C3{1} = C1 i C3{2} = C2

C3 = [C1 C2]
Concateneaz coninutul tablourilor de celule C1 i C2
Indexare
X = C(s)
Retureaz celulele tabloului C specificate prin indicii s

X = C{s}
Retureaz coninutul celulelor lui C care sunt specificate prin indicii s

X = C{s}(t)
Refer unul sau mai multe elemente ale unui tablou aflat n interiorul
unei celule. Indicele s selecteaz celula, iar indicele t selecteaz
elementul (elementele) de tablou.

Exemplu de definire a unui tablou de celule:

>> Tablou_celule = {magic(3), 'Toyota Avalon'; 3+7i, -pi:pi/12:pi}
Tablou_celule =
[3x3 double] 'Toyota Avalon'
[3.0000 + 7.0000i] [1x25 double]

Coninutul celulelor poate fi accesat astfel:

>> Tablou_celule{1}
ans =
8 1 6
3 5 7
4 9 2
>> Tablou_celule{2}
ans =
3.0000 + 7.0000i
>> Tablou_celule{3}
Conf.dr.ing. Ovidiu-Aurelian Detean Programare si limbaje II Curs 3. Clase Matlab
9 | P a g e
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

Afiarea structurii grafice a unui tablou de celule

>> cellplot(Tablou_celule,'legend')

S-ar putea să vă placă și