Matrici

Cum cream Matrici?

Codul
-->a=rand(2,3)
genereaza in mod aleator o matrice de 2 linii si 3 coloane cu elemente aleatoare folosind o distributie uniforma in intervalul [0,1] (vezi cuvantul cheie rand).
 a  =

    0.7263507    0.5442573    0.2312237
    0.1985144    0.2320748    0.2164633

Codul
b= a>=.5
genereaza o matrice cu valori booleane pe baza matricii a generand listarea
 b  =

  T T F
  F F F

Codul
c=a'
genereaza matricea c ca fiind transpusa matricii a. Rezulta astfel listarea:
 c  =

    0.7263507    0.1985144
    0.5442573    0.2320748
    0.2312237    0.216463

Codul
 d=[1,3,5;6,5,4;0,-1,0;[10:-2:6]]
determina listarea
 d  =

    1.     3.    5.
    6.     5.    4.
    0.   - 1.    0.
    10.    8.    6.
Acest cod permite generarea unei matrici folosind operatorii [] , ; :.


Concatenarea matricilor

Codul
e=[d,[0:3]']
determina listarea
 e  =

    1.     3.    5.    0.
    6.     5.    4.    1.
    0.   - 1.    0.    2.
    10.    8.    6.    3
Aceasta este operatia de concatenare de matrici. Aici matricea d este concatenata cu vectorul coloana [0:3]'.


Fie acum codul
f=[[3:6];[7:10]]
Acesta determina listarea
 f  =

    3.    4.    5.    6.
    7.    8.    9.    10.
Putem acum concatena matricile d si e folosind codul
g=[e;f]
obtinand acum listarea
 g  =

    1.     3.    5.    0.
    6.     5.    4.    1.
    0.   - 1.    0.    2.
    10.    8.    6.    3.
    3.     4.    5.    6.
    7.     8.    9.    10.
Efectul net este adaugarea a doua noi linii la matricea e.

Putem insa adauga coloane la matricea e folosind codul

h=[e,f']
Se obtine astfel matricea
 h  =

    1.     3.    5.    0.    3.    7.
    6.     5.    4.    1.    4.    8.
    0.   - 1.    0.    2.    5.    9.
    10.    8.    6.    3.    6.    10.

Accesarea unui element de matrice

Fie cazul in care matricea a este:
 a  =
 
    0.5608486    0.7263507    0.5442573  
    0.6623569    0.1985144    0.2320748
In aceasta situatie codul
c=a';a(2,2),c(2,1)=4;c
determina listarea
 ans  =
 
    0.1985144  
 c  =
 
    0.5608486    0.6623569  
    4.           0.1985144  
    0.5442573    0.2320748
Semnificatia acestui cod este:
Matricea c este transpusa matricii a. Listeaza elementul (2,2) al matricii a. Atribuie elementului (2,1) al matricii c valoarea 4. Listeaza matricea c.
Observam ca accesarea unui element al unei matrici se face folosind indicii intre doua paranteze rotunde.

Operatorul () are aici rolul de operator de selectie element. (vezi cuvantul cheie parents).

 


Submatrici

Extragerea unei submatrici din alta matrice este o operatie curenta.
Se poate folosi spre exemplu o matrice care da indicii ce trebuiesc selectati. Spre exemplu in cazul matricii
 h  =

    1.     3.    5.    0.    3.    7.
    6.     5.    4.    1.    4.    8.
    0.   - 1.    0.    2.    5.    9.
    10.    8.    6.    3.    6.    10.

Exemplul 1. Codul
m=h([1:7])
determina listarea
 m  =

    1.
    6.
    0.
    10.
    3.
    5.
  - 1.
Observam ca au fost extrase elementele din matricea h in ordinea mai intai coloanele (de sus in jos) apoi liniile.

 

Exemplul 2. Codul

n=h(:,[2:3])
determina listarea
 n  =

    3.    5.
    5.    4.
  - 1.    0.
    8.    6
Observam ca am extras colanele 2 si trei in intregime. Codul s-ar putea interpreta astfel:

Extrage din toate liniile (caracterul : pus pe pozitia liniei) doar coloanele de la 2 la 3 (2:3).
 


Exemplul 3. Sau

p=h([2:3],[4:5])
care determina listarea
 p  =

    1.    4.
    2.    5
 

Exemplul 4. Analog codul

q=h([2:3],:)
produce
 q  =

    6.    5.    4.    1.    4.    8.
    0.  - 1.    0.    2.    5.    9
Aici am extras integral liniile 2 si tre ale matricii h. Codul de mai sus se poate citi aproximativ:
Extrage elementele din liniile de la 2 la 3 (2:3 pe pozitia liniilor) din toate coloanele (caracterul : pus pe pozitia coloanei).
 

Exemplul 5. Acum devine evident ca putem extrage elementele liniilor 1 si 4 si ale coloanelor 1 si 6 folosind codul:

r=h([1,4],[1,6])
obtinand maricea
 r  =

    1.     7.
    10.    10

Exemplul 6. Devine acum clar ca daca dorim extragerea elemetelor de pe liniile 1, 3 si 4 de pe coloanele 1, 3 si 5 trebuie scris codul:
s=h([1,3,4],[1,3,5])
cod care produce
 s  =

    1.     5.    3.
    0.     0.    5.
    10.    6.    6
        
 h  =

    1.     3.    5.    0.    3.    7.
    6.     5.    4.    1.    4.    8.
    0.   - 1.    0.    2.    5.    9.
    10.    8.    6.    3.    6.    10.
Pentru comparare usoara in dreapta este listata din nou matricea h.
 

Exemplul 7. Acelasi rezultat se obtine daca se introduce codul

lin=[1,3,4];col=[1,3,5];s=h(lin,col)
Mai observam ca operatorul : este folosit aici cu rolul de a indica fie orice element de pe linie, fie orice element de pe coloana, in functie de cum este plasat pe prima, sau pe a doua, pozitie, in locul indicilor de selectie.




Vezi cuvintele cheie clear who global comma colon semicolon quote

Cornel Mironel Niculae @fizica.unibuc.ro
2008-2009

Last updated: 29 Nov 2008