Sunteți pe pagina 1din 7

Programare si limbaje II

Anul I, AR+ITT

Laborator 3. Matrice i operaii cu matrice (1)


3.1. Pregtirea mediului de lucru
Dupa lansarea mediului Matlab, schimbai calea curent spre directorul propriu, L:\.
nregistrai jurnalul sesiunii curente astfel:
>> diary lab3.txt

Verificai existena fiierului specificat, n directorul propriu (fereastra Current Directory). La nceput, acesta va
avea dimensiunea 0 octei.
3.2 Definirea unei matrice
O matrice mn reprezint un tablou dreptunghiular de elemente, avnd m linii i n coloane. La definirea unei
matrice n Matlab se folosesc parantezele ptrate, liniile se separ ntre ele prin (;) sau tasta <Enter>, iar
elementele n cadrul unei linii prin spaii sau virgul. Se pot folosi, de asemenea, expresii de tip interval, folosind
operatorul dou puncte (:).
>> A=[1 2.5 6;0 5 3.22]
A =
1.0000
2.5000
6.0000
0
5.0000
3.2200
>> B=[2 3
6,5
1,2]
B =
2
3
6
5
1
2
>> C=[0:4;5:9;10:2:18]
C =
0
1
2
3
4
5
6
7
8
9
10
12
14
16
18

3.3 Dimensiunea unei matrice size()


>> size(A)
ans =
2
3
>> size(B)
ans =
3
2
>> size(C)
ans =
3
5

Funcia returneaz numrul de linii i de coloane al unei matrice. Aceste numere pot fi memorate n variabile,
pentru o utilizare ulterioar (nr numrul de linii, nc numrul de coloane):
>> [nr nc]=size(C)
nr =
3
nc =
5

3.4 Calculul matricei transpuse


Se folosete operatorul apostrof (') pentru calculul transpusei conjugate i operatorul punct apostrof (.') pentru
calculul transpusei fr conjugare.
1|Page

Conf.dr.ing. Ovidiu-Aurelian Detean Programare si limbaje II

Laborator 3. Matrice i operaii cu matrice (1)

>> C'
ans =
0
1
2
3
4
>> C.'
ans =
0
1
2
3
4

5
6
7
8
9

10
12
14
16
18

5
6
7
8
9

10
12
14
16
18

n cazul n care matricea nu are n componen numere complexe, nu exist nici o diferen ntre rezultatele
furnizate de cei doi operatori (deoarece partea imaginar este zero).
3.5 Matrice speciale
3.5.1 Matricea zero
Matricea zero reprezint o matrice care are toate elementele nule. Pentru crearea acesteia se folosete funcia
zeros(). A se vedea documentaia:
>> doc zeros

Crearea unei matrice ptrate cu 3 linii i 3 coloane, avnd toate elementele zero:
>> Z3=zeros(3)
Z3 =
0
0
0
0
0
0

0
0
0

Crearea unei matrice cu 3 linii i 5 coloane, avnd toate elementele zero:


>> Z35=zeros(3,5)
Z35 =
0
0
0
0
0
0
0
0
0

0
0
0

0
0
0

3.5.2 Matricea unu


Matricea unu reprezint o matrice care are toate elementele egale cu 1. Pentru crearea acesteia se folosete
funcia ones(). A se vedea documentaia:
>> doc ones

Crearea unei matrice ptrate cu 3 linii i 3 coloane, avnd toate elementele egale cu 1:
>> U3=ones(3)
U3 =
1
1
1
1
1
1

1
1
1

Crearea unei matrice cu 3 linii i 5 coloane, avnd toate elementele egale cu 1:


>> U35=ones(3,5)
U35 =
1
1
1
1
1
1
1
1
1

1
1
1

1
1
1

3.5.3 Matricea identitate


Matricea identitate reprezint o matrice care are toate elementele de pe diagonala principal egale cu 1, iar
celelalte egale cu zero. Pentru crearea acesteia se folosete funcia eye(). A se vedea documentaia:
>> doc eye

Crearea unei matrice identitate ptrate, cu 3 linii i 3 coloane:


2|Page

Conf.dr.ing. Ovidiu-Aurelian Detean Programare si limbaje II

>> I3=eye(3)
I3 =
1
0
0
1
0
0

Laborator 3. Matrice i operaii cu matrice (1)

0
0
1

n cazul n care numrul de linii este diferit de numrul de coloane, rndurile sau coloanele suplimentare se vor
completa cu zero. Crearea unei matrice identitate, cu 3 linii i 5 coloane:
>> I35=eye(3,5)
I35 =
1
0
0
1
0
0

0
0
1

0
0
0

0
0
0

3.5.4 Matricea pseudoaleatoare uniform distribuit


Matricea pseudoaleatoare reprezint o matrice care conine valori pseudoaleatoare, generate din distribuia
uniform standard pe intervalul deschis (0,1). Pentru crearea acesteia se folosete funcia rand(). A se vedea
documentaia:
>> doc rand

Crearea unei matrice pseudoaleatoare ptrate, cu 3 linii i 3 coloane:


>> R3=rand(3)
R3 =
0.4868
0.3063
0.4359
0.5085
0.4468
0.5108

0.8176
0.7948
0.6443

Crearea unei matrice pseudoaleatoare cu 3 linii i 5 coloane:


>> R35=rand(3,5)
R35 =
0.4886
0.4588
0.5785
0.9631
0.2373
0.5468

0.5211
0.2316
0.4889

0.6241
0.6791
0.3955

0.3674
0.9880
0.0377

3.5.5 Matricea pseudoaleatoare normal distribuit


Matricea pseudoaleatoare normal distribuit reprezint o matrice care conine valori pseudoaleatoare, generate
din distribuia normal standard. Pentru crearea acesteia se folosete funcia randn(). A se vedea documentaia:
>> doc randn

Crearea unei matrice pseudoaleatoare normal distribuite, ptrate, cu 3 linii i 3 coloane:


>> Rn3=randn(3)
Rn3 =
0.0662
1.0826
0.6524
1.0061
0.3271
-0.6509

0.2571
-0.9444
-1.3218

Crearea unei matrice pseudoaleatoare normal distribuite, cu 3 linii i 5 coloane:


>> Rn35=randn(3,5)
Rn35 =
1.1385
-1.3981
-2.4969
-0.2551
0.4413
0.1644

0.7477
-0.2730
1.5763

-0.4809
0.3275
0.6647

0.0852
0.8810
0.3232

3.5.6 Matricea diagonal


Matricea diagonal reprezint o matrice ptrat care conine valori diferite de zero doar pe diagonala principal
sau pe diagonale paralele cu aceasta, situate deasupra sau sub ea. Pentru crearea matricei diagonale se folosete
funcia diag().
n cazul n care a reprezint un vector cu n elemente, iar D o matrice ptrat, forma general a funciei diag() este
urmtoarea:
D
D
a
a

=
=
=
=

diag(a,k)
diag(a)
diag(D,k)
diag(D)

3|Page

Conf.dr.ing. Ovidiu-Aurelian Detean Programare si limbaje II

Laborator 3. Matrice i operaii cu matrice (1)

n prima form general, este construit o matrice ptrat de dimensiune n+abs(k), avnd elementele vectorului
a pe diagonala de ordin k. n cazul n care k=0, vectorul a va coincide cu diagonala principal. n cazul k>0,
elementele vectorului a vor fi aezate pe diagonala de ordin k situat deasupra diagonalei principale, iar n cazul
k<0, elementele vectorului a vor fi aezate pe diagonala de ordin k situat sub diagonala principal.
Exemplu:
>> D1=diag(a,2)
D1 =
0
0
0
0
0
0
0
0
0
0
0
0
>> D2=diag(a,-2)
D2 =
0
0
0
0
5.0000
0
0
-3.2500
0
0
0
0

5.0000
0
0
0
0
0

0
-3.2500
0
0
0
0

0
0
2.0000
0
0
0

0
0
0
101.0000
0
0

0
0
0
0
2.0000
0

0
0
0
0
0
101.0000

0
0
0
0
0
0

0
0
0
0
0
0

A doua form general este echivalent primei, cu k=0. Elementele vectorului a vor fi amplasate pe diagonala
principal:
>> D3=diag(a)
D3 =
5.0000
0
0
-3.2500
0
0
0
0

0
0
2.0000
0

0
0
0
101.0000

n cazul n care se d o matrice D i vrem s extragem ntr-un vector elementele de pe diagonala principal sau
diagonalele de ordin k, se folosesc ultimele dou forme generale.
Exemplu:
>> C
C =

>>
b1

>>
b2

>>
b3

0
1
2
5
6
7
10
12
14
b1=diag(C)
=
0
6
14
b2=diag(C,2)
=
2
8
18
b3=diag(C,-1)
=
5
12

Observaii:
diag(diag(D))
sum(diag(D))
Exemple:

3
8
16

4
9
18

este o matrice diagonal


reprezint urma matricei D (suma elementelor de pe diagonala principal)

>> D3
D3 =
5.0000
0
0
-3.2500
0
0
0
0
>> DD3=diag(diag(D3))
DD3 =
5.0000
0

0
0
2.0000
0

0
0
0
101.0000

4|Page

Conf.dr.ing. Ovidiu-Aurelian Detean Programare si limbaje II

0
-3.2500
0
0
0
0
>> sdD3=sum(diag(D3))
sdD3 =
104.7500

0
2.0000
0

Laborator 3. Matrice i operaii cu matrice (1)

0
0
101.0000

3.5.7 Matricele ptrate


Matricele ptrate au numrul de linii egal cu numrul de coloane. n cazul matricelor ptrate se poate vorbi
despre diagonala principal, care unete elementele din colul din stnga sus i colul din dreapta jos i diagonala
secundar, care unete colurile opuse. n unele funcii de generare a matricelor, de exemplu zeros(), ones(),
eye(), rand(), randn(), dac se specific un singur parametru dimensional, se presupune c matricea este ptrat.
3.5.8 Matricele simetrice
Matricele simetrice sunt matricele egale cu matrice transpus.
3.5.9 Matricea vid
Matricea vid este matricea fr nici un element (0 linii i 0 coloane) i se construiete folosind parantezele
ptrate []
>> V=[]
V =
[]

3.5.10 Matricele multidimensionale


Matlab poate manipula i matrice cu mai mult de dou dimensiuni. De exemplu, matricea cubic, de dimensiuni
3x3x3 coninnd elemente pseudoaleatoare normal distribuite se creeaz astfel:
>> R3D=randn(3,3,3)
R3D(:,:,1) =
-0.7841
-0.6045
-1.8054
0.1034
1.8586
0.5632
R3D(:,:,2) =
-0.1249
0.7847
1.4790
0.3086
-0.8608
-0.2339
R3D(:,:,3) =
-1.4694
-0.0942
0.1922
0.3362
-0.8223
-0.9047

0.1136
-0.9047
-0.4677
-1.0570
-0.2841
-0.0867
-0.2883
0.3501
-1.8359

Se observ afiarea matricei pe straturi.


3.5.11 Ptratul magic
Funcia M=magic(n) genereaz o matrice ptrat nxn construit din ntregi de la 1 la n2 (n>=3 ), care are
proprietatea c suma elementelor de pe oricare linie sau coloan este constant. Exemplu: M3 ptratul magic
3x3, M4 ptratul magic 4x4.
>> M3=magic(3)
M3 =
8
1
3
5
4
9
>> M4=magic(4)
M4 =
16
2
5
11
9
7
4
14

6
7
2

3
10
6
15

13
8
12
1

5|Page

Conf.dr.ing. Ovidiu-Aurelian Detean Programare si limbaje II

Laborator 3. Matrice i operaii cu matrice (1)

Suma elementelor pe coloane este constant:


>> sum(M4)
ans =
34
34

34

34

Suma elementelor pe linii este constant:


>> sum(M4')'
ans =
34
34
34
34

Suma elementelor de pe diagonala principal (urma matricei) are tot valoarea 34:
>> sum(diag(M4))
ans =
34

Valoarea sumei caracteristice a ptratului magic de ordin 4:


>> sum(1:4^2)/4
ans =
34

3.5.12 Matricele rare


Matricele rare sunt matrice de obicei de dimensiuni mari, dar care conin un numr mic de elemente diferite de
zero. Pentru crearea facil a matricelor rare, n Matlab se folosete funcia sparse().
Exemplu: s se genereze o matrice rar S57 de dimensiuni 5x7, care s conin doar urmtoarele elemente
nenule: S571,3=5.22, S572,6=10, S573,4=-2.255, S574,2=23, S573,6=121.
Rezolvare: se vor crea trei vectori, coninnd indicii i, j i valorile corespunztoare ale elementelor date, apoi se
utilizeaz funcia sparse().
>> i57=[1 2 3 4 3]
i57 =
1
2
3
>> j57=[3 6 4 2 6]
j57 =
3
6
4
>> v57=[5.22 10 -2.255
v57 =
5.2200
10.0000

2
6
23 121]
-2.2550

23.0000

121.0000

Dac se apeleaz funcia sparse()avnd ca parametri doar cei trei vectori definii, va fi creat o matrice rar avnd
ca dimensiuni valoarea maxim din vectorii indicilor, i57 i j57.
>> S57=sparse(i57,j57,v57)
S57 =
(4,2)
23.0000
(1,3)
5.2200
(3,4)
-2.2550
(2,6)
10.0000
(3,6)
121.0000
>> size(S57)
ans =
4
6

Dac se dorete crearea unei matrice rare cu dimensiuni mai mari, se vor specifica aceste dimensiuni ca si
parametri. Se obine matricea rar de dimensiuni 5x7:
>> S57=sparse(i57,j57,v57,5,7)
S57 =
(4,2)
23.0000
(1,3)
5.2200
(3,4)
-2.2550
(2,6)
10.0000
(3,6)
121.0000
>> size(S57)
ans =
5
7

Pentru vizualizarea complet a matricei, se folosete funcia full():


>> full(S57)

6|Page

Conf.dr.ing. Ovidiu-Aurelian Detean Programare si limbaje II

Laborator 3. Matrice i operaii cu matrice (1)

ans =
0
0
0
0
0

0
0
0
23.0000
0

5.2200
0
0
0
0

0
0
-2.2550
0
0

0
0
0
0
0

0
10.0000
121.0000
0
0

0
0
0
0
0

Pentru vizualizarea modelului de raritate a matricei, se folosete funcia spy(). Aceasta ofer o reprezentare
grafic a poziiilor ocupate de elementele nenule din matrice.
>> spy(S57)

Fig. 3.1 Modelul de raritate a matricei S57. Funcia spy()


n mod similar, dar cu o reprezentare de tip text, se poate folosi urmtoarea secven:
>> format +
>> full(S57)
ans =
+
+
- +
+
>> format

3.6 Finalizarea sesiunii de lucru


ncheiai scrierea fiierului jurnal, prin comanda:
>> diary off

Salvai coninutul spaiului variabilelor prin comanda:


>> save lab3

Vizualizai coninutul fiierului jurnal lab3.txt, n Windows Explorer sau alt program similar.
Verificai existena fiierului de date lab3.mat n directorul curent.
3.7 Exerciii individuale
1. S se studieze pe larg documentaia comenzilor i funciilor prezentate n lucrare: diary, size(), zeros(), ones(),
eye(), rand(), randn(), diag(), magic(), sparse(), full(), spy(), round(), save.
2. Interpretai rezultatele urmtoarelor comenzi:
>> diag(1:7)
>> diag(1:5,3)
>> diag(1:5,-3)

3. Folosind funcia rand() i funcia de rotunjire round(), s se simuleze aruncarea de trei ori a unei perechi de
zaruri.
7|Page

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