Documente Academic
Documente Profesional
Documente Cultură
Matrici vide
Declaraţia x=[ ]
determină generarea unei matrici de dimensiune 0 x 0. Utilizarea acestei comenzi nu va conduce
la o eroare. Matricile vide există în spaţiul de lucru (deci declaraţia anterioară este diferită de
declaraţia clear x, care şterge pe x din lista variabilelor curente) dar au dimensiunea 0. Funcţia
exist poate fi utilizată pentru verificarea existenţei unei matrici, iar isempty indică dacă o matrice
este vidă.
O posibilitatea de a şterge rânduri sau coloane ale unei matrici este de a le declara vide.
Astfel,
A(:,[2 4])=[ ]
1
Geometrie computaţională Laborator 2
Operaţii cu matrici
Adunarea şi scăderea
În cazul operaţiilor de adunare şi scădere, operatorul nu va mai fi precedat de punct.
Exemplu:
Fie: A = [2 2 5;1 4 7], B = [3 4 1;2 5 3], p = 2.
Să se calculeze: C = A + B, D = B - A, E = p - A, F = B - p, G = p + A
Secvenţa MATLAB va fi:
A = [2 2 5;1 4 7]; B=[3 4 1;2 5 3]; p=2;
C=A+B
D=B-A
E=p-A
F=B-p
G=p+A
Rezultatul returnat va fi:
C=5 6 6
3 9 10
D=1 2 -4
1 1 -4
E=0 0 -3
1 -2 -5
F=1 2 -1
031
G=4 4 7
369
Înmulţirea tablourilor
Pentru a preciza că înmulţirea se efectuează element cu element, între componentele a două
matrici de aceleaşi dimensiuni, se utilizează operatorul de înmulţire precedat de punct (.*).
Instrucţiunea este de forma:
2
Geometrie computaţională Laborator 2
C = A .* B
Exemplu: Fie A = [1 3 2], B = [3 4 6] , p = 3.
Să se calculeze, folosind calculul element cu element, înmulţirea matricelor A şi B, înmulţirea
scalarului p cu matricea A şi înmulţirea matricei B cu scalarul p.
Secvenţa MATLAB va fi:
A = [1 3 2] ; B = [3 4 6] ; p = 3;
C = A.*B
D = p .*A
E = B .* p
Rezultatul returnat va fi:
C = [3 12 12]
D = [3 9 6]
E = [9 12 18]
Împărţirea la dreapta
Operaţia de împărţire element cu element, între două tablouri este simbolizată cu operatorul
punct–slash (./).
Instrucţiunea este de forma:
C = A ./ B
şi reprezintă împărţirea element cu element, a tablourilor A şi B, cu aceleaşi dimensiuni, rezultând
elementele:
C (i,j) = A(i,j) / B(i,j)
Ridicarea la putere
Operaţia de ridicare la putere, element cu element, într-un tablou este simbolizată cu operatorul
punct-^ (.^).
Instrucţiune este de forma:
C = A.^B
şi reprezintă ridicarea fiecărui element din tabloul A la puterea indicată de valoarea elementului din
aceeaşi poziţie a tabloului B, adică:
C(i,j)=A(i,j)^B(i,j)
3
Geometrie computaţională Laborator 2
Transpunerea tablourilor
Operaţia de transpunere a unui tablou este simbolizată de operatorul punct-apostrof.
Instrucţiunea este de forma:
B=A.'
şi liniile tabloului A vor deveni coloanele tabloului transpus B. Acest lucru face ca un tablou A , cu
dimensiuneam n × , să devină un tablou B cu dimensiunean m × .
In principal, utilizându-se ‘, are loc o transpunere formală a matricii. Dacă matricea este complexă,
atunci A’ este conjugata complexă transpusă. Acest lucru poate conduce uneori la rezultate
eronate, mai ales în cazul lucrului cu numere complexe. Pentru transpusa neconjugată se va utiliza
A.’ sau conj(A’).
4
Geometrie computaţională Laborator 2
1 2 3
1 2 4 5 6
A= 3 4 B= 7 8 9 .
Cu secvenţa MATLAB:
A=[1 2; 3 4]; B=[1 2 3; 4 5 6; 7 8 9];
A1=det(A)
B1=det(B)
se obţine rezultatele:
A1= -2 B1= 0
5
Geometrie computaţională Laborator 2
Şirurile de text pot fi introduse prin plasarea lor între apostrof. Un şir de text poate fi afişat folosind
comanda:
>>disp(’şir text’)
>>plot(x,y) plotează vectorul y versus vectorul x. Vectorii trebuie să aibă aceeaşi lungime. Dacă
unul din argumentele de intrare este o matrice vectorul se plotează versus liniile sau coloanele
matricei.
În cazul când ambele argumente sunt matrici, coloanele lui y se plotează versus coloanele lui x.
Dacă y este un vector complex, atunci plot(y) va plota partea imaginară versus partea reală.
>>subplot(211) împarte ecranul în două ferestre şi pune plotul curent în prima fereastră.
>>subplot(212) împarte ecranul în două ferestre şi pune plotul curent în a doua fereastră.
Manipularea matricelor
MATLAB-ul oferă următoarele funcţii pentru manipularea matricelor:
diag creează sau extrage diagonalele matricei;
fliplr roteşte matricea în jurul axei verticale (inversează ordinea coloanelor);
flipud roteşte matricea în jurul axai orizontale (inversează ordinea linilor);
reshape schimbă dimensiunile matricei (redimensionează matricea);
rot90 roteşte matricea cu un multiplu de 90 de grade;
tril extrage matricea inferior triunghiulară dintr-o matrice;
triu extrage matricea superior triunghiulară dintr-o matrice;
: specifică indicii, rearanjează sau decuplează o submatrice.
6
Geometrie computaţională Laborator 2
A=[1 2 3; 4 5 6; 7 8 9];
B=fliplr(A)
C=flipud(A)
⎡3 2 1 ⎤ ⎡7 8 9 ⎤
⎢6 5 4 ⎥ ⎢ 4 5 6⎥
⎢ ⎥ ⎢ ⎥
⎢⎣9 8 7 ⎥⎦ ⎢⎣1 2 3⎥⎦
se obţin rezultate: B= ; C= .
Cu secvenţa MATLAB:
A=[1 2 3; 4 5 6; 7 8 9];
B=rot90(A,1)
C=rot90(A,-2)
⎡3 6 9⎤ ⎡9 8 7 ⎤
⎢2 5 8⎥ ⎢6 5 4 ⎥
⎢ ⎥ ⎢ ⎥
⎢⎣1 4 7 ⎥⎦ ⎢⎣3 2 1 ⎥⎦
Se obţin rezultatele: B= ; C=
7
Geometrie computaţională Laborator 2
j:k -selectează elementele [j, j+1,…., k] ale unui vector, dacă j>k,vectorul rezultat este gol.
j:i:k -selectează elementele [j, j+i, j+2i,…., k] ale unui vector; vectorul rezultat este gol dacă i>0;
şi j>k sau dacă i<0 şi j<k.
În cazul selectării liniilor sau coloanelor matricelor, se folosec formele:
A(:,j) -selectează coloana j a matricei A;
A(i,:) -selectează linia i a matricei A;
A(:,:) -selectează întreaga matrice A;
A(j:k) -selectează elementele A(j), A(j+1),…, A(k) ale vectorului A;
A(:,j:k) -selectează toate elementele liniile şi coloanele de la j la k, A(:,j),A(:,j+1),…A(:,k), ale
matricei A;
A(:) -selectează toate elementele matricei A, privite ca o singură coloană (începând cu prima).
⎡1 2 3 4 5 6⎤
⎢2 3 4 5 6 1 ⎥⎥
⎢
⎢3 4 5 6 1 2⎥
⎢ ⎥
⎢4 5 6 1 2 3⎥
⎢ 4⎥⎦
Exemplul 1.1. Fie A = ⎣5 6 1 2 3
8
Geometrie computaţională Laborator 2
⎡ 3⎤
⎢ 4⎥
⎢ ⎥
⎢5 ⎥
⎢ ⎥
⎢6 ⎥
⎢1 ⎥ ⎡2 4 5⎤
⎢ ⎥ ⎢ ⎥
C= ⎢⎣2⎥⎦ ; E= ⎣5 1 2⎦
Matrici speciale
Anumite matrici des utilizate sunt disponibile în MATLAB ca funcţii utilitare:
>>eye(n), unde n este un număr natural, returnează o matrice identitate de dimensiune nxn. Dacă
n este un număr întreg negativ, va fi returnată o matrice nulă. Dacă sintaxa este de forma eye(A) ,
unde A este o matrice, atunci va fi returnată o matrice identitate de dimensiune egala cu
dimensiunea matricei A. Dacă avem sintaxa eye(m,n), va fi creată o matrice identitate de
dimensiunea maximă posibilă, iar restul va fi completat cu zerouri până se ajunge la o matrice
dimensiuneam n × .
>>ones(n), unde n este un număr natural, returnează o matrice de dimensiune nxn cu toate
elementele egale cu 1. Dacă n este un număr întreg negativ, va fi returnată o matrice nulă.
Dacă sintaxa este de forma ones(A) , unde A este o matrice, atunci va fi returnată o matrice cu
toate elementele egale cu 1, de dimensiune egala cu dimensiunea matricei A. Dacă avem sintaxa
ones(m,n), va fi creată o matrice dimensiunea m n × , având toate elementele egale cu 1.
>>zeros(n) , unde n va fi un număr natural, returnează o matrice de dimensiune nxn cu toate
elementele egale cu zero. Restul observaţiilor de la matricea anterioară sunt valabile şi aici, cu
diferenţa că de fiecare dată matricea generată va avea toate elementele egale cu
zero.
>>rand(n) , unde n va fi un număr natural, returnează o matrice de dimensiune nxn având ca
elemente numere aleatoare uniform distribuite între 0 şi 1.
>>g=[] va genera o matrice g de dimensiune 0, dar care va exista în spaţiul de lucru.
9
Geometrie computaţională Laborator 2
10
Geometrie computaţională Laborator 2
11