Sunteți pe pagina 1din 13

Software de analiza numerica si simbolica 1

CURS 5

GENERAREA ȘI MANIPULAREA VECTORILOR ȘI MATRICELOR

GENERAREA VECTORILOR ȘI MATRICELOR UZUALE


1. Generarea vectorilor cu pas liniar
Sintaxe:
1. v=initial:pas:final generează un vector linie v cu elementele începând de la initial la
final, cu pasul egal cu pas (pasul poate fi și negativ, dar atunci valoarea inițială trebuie să fie
mai mare decât valoarea finală).
2. v=initial:final generează un vector linie v cu elementele începând de la initial la final,
cu pasul egal cu 1 (initial<=final).
3. v=linspace(initial,final,numar_de_elemente) generează un vector linie v cu elementele
începând de la initial la final, cu pas constant și având un număr de elemente egal cu
numar_de_elemente.

4. v=linspace(initial,final) generează un vector linie v cu elementele începând de la


initial la final, cu pas constant și având un număr de elemente egal cu 100.

Exemple:
a=1:3:15
b=1:15
c=14:-2:4
d=linspace(17,58,4)
e=linspace(pi,-pi,6)
f=linspace(3,200)

2. Generarea vectorilor cu pas logaritmic


Sintaxe:
1. v=logspace(initial,final,numar_de_elemente) generează un vector linie v având
numar_de_elemente distribuite logaritmic între 10initial și 10final.

2. v=logspace(initial,final) generează un vector linie v având 50 de elemente distribuite


logaritmic între 10initial și 10final.
Observație: dacă final=pi atunci elementele vor fi distribuite logaritmic între 10initial și π.
Exemple:
g=logspace(1,2)
r=logspace(1,pi)
h=logspace(2,1,5)
Software de analiza numerica si simbolica 2

3. Matricea goală
Sintaxa:
X=[] – generează matricea goală (fără nici un element)

Exemplu:
X=[]
X =
[]

4. Matricea unitate
Sintaxe:
1. ones(n) returnează o matrice de dimensiune n x n cu toate elementele egale cu 1.
2. ones(m,n) returnează o matrice de dimensiune m x n cu toate elementele egale cu 1.
3. ones(size(M)) returnează o matrice de dimensiunea matricei M cu toate elementele egale cu
1.

Exemple:
ones(3)
ones(1,5)
ones(5,1)
ones(3,2)
D=[1 5 7; 3 6 8];
ones(size(D))

5. Matricea zero
Sintaxe:
1. zeros(n) returnează o matrice de dimensiune n x n cu toate elementele egale cu 0.
2. zeros(m,n) returnează o matrice de dimensiune m x n cu toate elementele egale cu 0.
3. zeros(size(M)) returnează o matrice de dimensiunea matricei M cu toate elementele egale cu
0.

Exemple:
zeros(3)
zeros(1,5)
zeros(5,1)
zeros(3,2)
D=[1 5 7; 3 6 8]; zeros(size(D))
Software de analiza numerica si simbolica 3

6. Matricea identitate
Sintaxe:
1. eye(n) returnează o matrice identitate de dimensiune n x n.
2. eye(m,n) returnează o matrice de dimensiune m x n având elementele primei diagonale egale
cu 1, iar restul elementelor egale cu 0.
3. eye(size(M)) returnează o matrice de dimensiune egală cu dimensiunea matricei M, având
elementele primei diagonale egale cu 1, iar restul elementelor egale cu 0.
Exemple:
eye(3)
eye(2,3)
eye(3,2)
D=[1 5 7; 3 6 8];
eye(size(D))

7. Matricea cu numere aleatoare cu distribuție uniformă între 0 și 1


Sintaxe:
1. rand(n) returnează o matrice de dimensiune n x n având drept elemente numere aleatoare
cu distribuție uniformă între 0 și 1.
2. rand(m,n) returnează o matrice de dimensiune m x n având drept elemente numere aleatoare
cu distribuție uniformă între 0 și 1.
3. rand(size(M)) returnează o matrice de dimensiunea matricei M având drept elemente numere
aleatoare cu distribuție uniformă între 0 și 1.
Observație: generarea matricelor cu elemente numere aleatoare care au o distribuție uniformă în
intervalul (a,b) se realizează cu sintaxa:
r=a+(b-a)*rand(m,n)

Exemple:
rand(3)
rand(1,5)
rand(5,1)
rand(3,2)
r=3+(5-3)*rand(1,100)%generare a 100 numere aleatoare cu distributie
uniforma in intervalul (3,5).
Software de analiza numerica si simbolica 4

8. Matricea cu numere aleatoare întregi cu distribuție uniformă


1. randi(imax,n) returnează o matrice pătrată de dimensiune n x n având drept elemente
numere aleatoare cu distribuție uniformă între 1 și imax.
2. randi(imax,m,n) returnează o matrice de dimensiune m x n având drept elemente numere
aleatoare cu distribuție uniformă între 1 și imax.
3. randi(imax,size(M)) returnează o matrice de dimensiunea matricei M având drept elemente
numere aleatoare cu distribuție uniformă între 1 și imax.
4. randi([imin,imax],n) returnează o matrice pătrată de dimensiune n x n având drept
elemente numere aleatoare cu distribuție uniformă între imin și imax.
5. randi([imin,imax],m,n) returnează o matrice de dimensiune m x n având drept elemente
numere aleatoare cu distribuție uniformă între imin și imax.
6. randi([imin,imax],size(M)) returnează o matrice de dimensiunea matricei M având drept
elemente numere aleatoare cu distribuție uniformă între imin și imax.
Exemple:
randi(25,3)
randi(23,2,5)
randi([0,5],10,1)
randi([0,10],3,2)
D=[1 5 7; 3 6 8];
randi([1,10],size(D))

9. Matricea cu numere aleatoare cu distribuție normală (Gaussiană)


Sintaxe:
1. randn(n) returnează o matrice de dimensiune n x n având drept elemente numere aleatoare
cu distribuție normală normată de medie 0 și abaterea standard 1.
2. randn(m,n) returnează o matrice de dimensiune m x n având drept elemente numere
aleatoare cu distribuție normală normată de medie 0 și abaterea standard 1.
3. randn(size(M)) returnează o matrice de dimensiunea matricei M având drept elemente
numere aleatoare cu distribuție normală normată de medie 0 și abaterea standard 1.
Observație: generarea matricelor cu elemente numere aleatoare care au o distribuție normală cu
media a și abaterea standard b se realizează cu sintaxa:
r=a+b*randn(m,n)

Exemple:
randn(3)
randn(1,5)
randn(5,1)
Software de analiza numerica si simbolica 5

randn(3,2)
D=[1 5 7; 3 6 8];
randn(size(D))
r=1+2*randn(1,200)%generare a 200 de valori aleatoare cu distributie
normala cu media 1 si abaterea medie patratica 2)

De menționat că la orice altă apelare a instrucțiunilor rand și randn, se obțin matrice cu alte numere
aleatoare. În cazul simulării experiențelor care impun aceleași condiții, se generează serii de numere
aleatoare identice, la care se controlează parametrul de inițializare al generatorului, notat seed
(sămânță), prin instrucțiunile rand('seed',n) sau randn('seed',n), unde n este valoarea atribuită
lui seed (n este un număr întreg cuprins între 0 și 232–1), după care se generează valorile aleatoare
Exemple: obținerea la orice apelare a aceeași matrice de numere aleatoare cu distribuție uniformă
rand('seed',567893);
rand(4)

randn('seed',567893);
randn(4)

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 axei orizontale (inversează ordinea liniilor)
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 decupează o submatrice

1. Extragerea submatricelor prin indici


Elementele individuale ale unui vector se apelează cu numele acestuia, urmat de un indice cuprins între
paranteze rotunde
Elementele individuale ale unei matrice se apelează cu numele acesteia, urmat de doi indici, cuprinși
între paranteze rotunde și separați de virgulă. Primul indice semnifică linia, iar al doilea coloana în
care se găsește elementul apelat.
Exemplu: înlocuirea elementului din linia 3 și coloana 3, A(3,3), al matricei A, cu suma dintre elementul
din linia 1 - coloana 3, A(1,3), și elementul din linia 3 - coloana 1, A(3,1).
A=[2 4 7 3;5 1 0 4;7 4 8 9]
Software de analiza numerica si simbolica 6

A =
2 4 7 3
5 1 0 4
7 4 8 9
A(3,3)=A(1,3)+A(3,1)
A =
2 4 7 3
5 1 0 4
7 4 14 9

Crearea vectorilor și matricelor mari, precum și manipularea acestora se face cu multă flexibilitate dacă
se utilizează indici de tip vector.
Pentru extragerea vectorilor cu elemente decupate din alți vectori, se folosesc formele:
a(j:k) selectează elementele [j,j+1,...,k] ale vectorului; dacă j>k, vectorul rezultat
este gol;
a(j:i:k) selectează elementele [j,j+i,j+2i,...,k] ale vectorului; vectorul rezultat
este gol dacă i>0 și j>k sau dacă i<0 și j<k.
Exemplu: extragerea elementelor 3:7 din vectorul a
a=[2 6 4 8 3 7 1 0 6]
b=a(3:7)
b =
4 8 3 7 1

Exemplu: extragerea elementelor 2,4,6,8 din vectorul a


a=[2 6 4 8 3 7 1 0 6]
c=a(2:2:8)
c =
6 8 7 0

Pentru extragerea submatricelor cu elemente decupate din alte matrice, se folosesc 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ă toate liniile și coloanele de la j la k (A(:,j),A(:,j+1),...,A(:,k))
ale matricei A;
A(j:k,:) selectează liniile de la j la k și toate coloanele (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.
Software de analiza numerica si simbolica 7

În general, dacă indicii x și y sunt vectori cu componente întregi, atunci instrucțiunea N=M(x,y)
creează o submatrice N, care conține elementele din liniile x ale coloanelor y ale matricei M.
Exemplu: extragerea submatricei B de dimensiunea 3 x 3, constând din elementele liniilor 1:3 ale
coloanelor 2:4 ale matricei A
A=[2 4 7 3;5 1 0 4;7 4 8 9]
A =
2 4 7 3
5 1 0 4
7 4 8 9
B=A(1:3,2:4)
B =
4 7 3
1 0 4
4 8 9

Exemplu: extragerea din matricea A a submatricei C de dimensiunea 3 x 1 care conține toate liniile din
coloana a 3-a
A=[2 4 7 3;5 1 0 4;7 4 8 9]
A =
2 4 7 3
5 1 0 4
7 4 8 9
C=A(:,3)
C =
7
0
8

Exemplu: extragerea sub-matricei D de dimensiunea 2 x 4 care conține liniile 1:2 ale tuturor
coloanelor matricei A
A=[2 4 7 3;5 1 0 4;7 4 8 9]
A =
2 4 7 3
5 1 0 4
7 4 8 9
D=A(1:2,:)
D =
2 4 7 3
5 1 0 4
Software de analiza numerica si simbolica 8

Exemplu: înlocuirea coloanele 1,3 și 4 ale matricei A, cu coloanele 1:3 ale matricei E
A=[2 4 7 3;5 1 0 4;7 4 8 9]
A =
2 4 7 3
5 1 0 4
7 4 8 9
E=[4 7 2 6;7 3 5 6;9 4 7 3]
E =
4 7 2 6
7 3 5 6
9 4 7 3
A(:,[1,3,4])=E(:,1:3)
A =
4 4 7 2
7 1 3 5
9 4 4 7

Exemplu: transformarea unei matrice A într-un vector coloană d


A=[1 2;3 4]
A =
1 2
3 4
d=A(:)
d =
1
3
2
4

Exemplu: generarea un vector prin întrețeserea elementelor a doi vectori


A=[1 3 5 7 9];B=[2 4 6 8];
n=length(A)+length(B);
C(1:2:n)=A;C(2:2:n)=B;
C
C =
1 2 3 4 5 6 7 8 9

Exemplu: inversarea coloanelor unei matrice A se face cu formula A(:,n:-1:1), unde n reprezintă
numărul de coloane.
A=[2 4 7 3;5 1 0 4;7 4 8 9]
Software de analiza numerica si simbolica 9

A =
2 4 7 3
5 1 0 4
7 4 8 9
F=A(:,size(A,2):-1:1)
F =
3 7 4 2
4 0 1 5
9 8 4 7

Exemplu: inversarea liniilor unei matrice A se face cu formula A(n:-1:1,:), unde n reprezintă numărul
de linii
G=A(size(A,1):-1:1,:)
G =
7 4 8 9
5 1 0 4
2 4 7 3

Observație: funcția size(M) returnează dimensiunea unei matrice, prima valoare returnată reprezintă
numărul de linii, iar a doua numărul de coloane

2. Redimensionarea unei matrice


Funcția reshape redimensionează o matrice X cu dimensiunea p x r într-o altă matrice Y, cu
dimensiunea m x n = p x r.
Se apelează cu sintaxa:
Y=reshape(X,m,n)

Elementele matricei Y vor fi în ordinea succesivă a coloanelor și pe fiecare coloană de sus în jos a
elementele matricei argument X (citite de sus în jos și de la stânga la dreapta).
Exemplu: redimensionarea matricei A cu dimensiunea 3 x 4 într-o matrice cu dimensiunea 2 x 6.
A=[2 4 7 3;5 1 0 4;7 4 8 9]
A =
2 4 7 3
5 1 0 4
7 4 8 9
I=reshape(A,2,6)
I =
2 7 1 7 8 4
5 4 4 0 3 9
Software de analiza numerica si simbolica 10

3. Rotirea matricei în jurul unei coloane sau linii


Funcțiile fliplr și flipud inversează ordinea coloanelor sau liniilor matricelor.
Se apelează cu sintaxele:
Y=fliplr(X)
Z=flipud(X)

fliplr(X) returnează matricea rezultată prin pivotarea matricei argument în jurul ultimei coloane,
operație prin care aceasta devine prima coloană.
flipud(X) returnează matricea rezultată prin pivotarea matricei argument în jurul ultimei linii,
operație prin care aceasta devine prima linie.
Exemplu: rotirea matricei A:
A=[2 4 7 3;5 1 0 4;7 4 8 9]
A =
2 4 7 3
5 1 0 4
7 4 8 9

 în jurul ultimei coloane;


J=fliplr(A)
J =
3 7 4 2
4 0 1 5
9 8 4 7

 în jurul ultimei linii.


K=flipud(A)
K =
7 4 8 9
5 1 0 4
2 4 7 3

4. Rotirea matricei cu multiplu de 90 de grade


Rotirea unei matrice cu multipli de 90 de grade în sens trigonometric se face cu funcția rot90.
Se apelează cu una dintre sintaxele:
Y=rot90(X)
Y=rot90(X,k)

Argumentul opțional k reprezintă multiplul de 90 de grade cu care se face rotația: pozitiv pentru sens
trigonometric și negativ pentru cel orar.
Software de analiza numerica si simbolica 11

Exemplu: rotirea matricei A:


A=[2 4 7 3;5 1 0 4;7 4 8 9]
A =
2 4 7 3
5 1 0 4
7 4 8 9

 în sens trigonometric cu 90 de grade;


M=rot90(A,1)
M =
3 4 9
7 0 8
4 1 4
2 5 7

 în sens orar cu 180 de grade.


N=rot90(A,-2)
N =
9 8 4 7
4 0 1 5
3 7 4 2

5. Matricea diagonală și triunghiulară


Matricea diagonală
Sintaxe:
➢ dacă v este un vector (linie sau coloană) atunci:
diag(v): returnează o matrice pătrată diagonală, cu elementele vectorului v pe diagonala
principală.
diag(v,k): returnează o matrice pătrată cu elementele vectorului v pe diagonala k deasupra
celei principale, dacă k>0, sau sub cea principală dacă k<0; restul elementelor sunt 0.
➢ dacă M este o matrice atunci:
diag(M): returnează un vector coloană care conține elementele de pe diagonala principală a
matricei M.
diag(M,k): returnează un vector coloană care conține elementele din matricea M de pe
diagonala k deasupra celei principale, dacă k>0, sau sub cea principală, dacă k<0.
Exemple:
a=randn(1,5)
A=randn(5)
Software de analiza numerica si simbolica 12

diag(a)
diag(a,1)
diag(a,-1)
diag(a,2)
diag(a,-2)
diag(A)
diag(A,2)
diag(A,-2)
diag(diag(A))

Matricea inferior triunghiulară


Sintaxe:
tril(M): extrage matricea inferior triunghiulară din matricea M (anulează toate elementele matricei M
de deasupra diagonalei principale).
tril(M,k): înlocuiește cu 0 toate elementele de deasupra diagonalei k din matricea M (raportarea se
face la diagonala principală – vezi sintaxa de la diag).
Pentru matricea A definită anterior verificați următoarele exemple:
A=randn(5)
tril(A)
tril(A,1)
tril(A,-1)

Matricea superior triunghiulară


Sintaxe:
triu(M): extrage matricea superior triunghiulară din matricea M (anulează toate elementele matricei
M de sub diagonala principală)

triu(M,k): înlocuiește cu 0 toate elementele de sub diagonala k din matricea M (raportarea se face la
diagonala principală – vezi sintaxa de la diag).
Exemple:
A=randn(5)
triu(A)
triu(A,1)
triu(A,-1)
Software de analiza numerica si simbolica 13

Bibliografie
1. ***, Fundamente de Matlab, telecom.etti.tuiasi.ro/
2. Iulian Lupea, Curs Matlab
3. Nicoleta Breaz ș.a., Modelarea matematică prin Matlab
4. ***, MATLAB User’s Guide, The Mathworks Inc., SUA

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