mihaispr
Administrator
Inregistrat: acum 17 ani
Postari: 2142
|
|
%>>semn automat pus in consola-reprezinta de fapt cursorul Matlab-ului
In continuare veti invata cum sa definiti valorile unei matrici in consola si sa operati calcule simple cu matrici:
1) Pentru a introduce o matrice si a o stoca intr-o variabila scrieti in consola:
>> a = [ 1 2; 3 4 ] % are efectul introducerii matricei aceasta este afisata doar daca se apasa ENTER;se obseva ca elementele matricei %sunt cuprinse intre paranteze drepte si separate cu ;
Obs. Daca insa avem de introdus o matrice f.mare scrieti elementele fiecarei linii si in loc de ; dati enter. Nu uitati ca elementele sa fie cuprinse intre [ si ]
Matricea va fi afisata in ordinea elementelor pe linii: 1 2 3 4
Pentru a reafisa matricea scrieti: >>a
Daca in schimb introduceti matricea: >>b = [ [1 2 3]' [2 4 7]' [3 5 8]']
Aceasta va fi afisata in ordinea elementelor pe coloane: 1 2 3 2 4 5 3 7 8
O matrice poate fi introdusa si folosind numere complexe astfel:
>>a=[1 2;3 4]+i*[5 6;7 8]
Efect: se va afisa matricea
a =
1.0000 + 5.0000i 2.0000 + 6.0000i 3.0000 + 7.0000i 4.0000 + 8.0000i
Referirea la un element al matricei se face astfel:
>>b=a(1,2) % adica va afisa elementul de pe linia 1 coloana 2
Se va afisa: b=2
Reunirea elementelor a 2 matrici date se face cu secventa:
>>a1=[1 2;3 4] >>a2=[8 9;7 5] >>a=[a1;a2]
Se va afisa: 1 2 3 4 8 9 7 5
Daca in plus dam comanda in consola:
>>b=a(1:3,: ) % se vor extrage din matrice numai liniile 1 si 3
Se va afisa: 1 2 8 9
Operatia a=[] atribuie variabilei a o matrice de dimensiune 0*0
2) Inversarea ordinii coloanelor unei matrice
>> a= [1 2 3;4 5 6;7 8 9]
%dupa prima comanda se afiseaza matricea 1 2 3 4 5 6 7 8 9
>>fliplr(a) %inverseaza ordinea coloanelor unei matrice
Se va afisa: 3 2 1 6 5 4 9 8 7
3) Inversarea ordinii liniilor unei matrice
» a= [1 2 3;4 5 6;7 8 9]
%dupa prima comanda se afiseaza matricea 1 2 3 4 5 6 7 8 9
>>flipud(a) %inverseaza ordinea liniilor unei matrice
Se va afisa: 7 8 9 4 5 6 1 2 3
4) Redimensionarea unei matrice
Redimensionati o matrice de 3*4 in una de 2*6. Obs. Numarul elementelor nu trebuie sa se schimbe,altfel nu se poate redimensiona
>> a= [1 4 7 10;2 5 8 11;3 6 10 12] %definirea unei matrici 3*4(3linii,4coloane) >> b=reshape(a,2,6) %redimensionare in matrice 2*6
Se va afisa: 1 3 5 7 10 11 2 4 6 8 10 12
Alta varianta pt.redimensionare a matricii cu functia reshape ar fi:
>>b= reshape(a,2,[])
5) Definirea unei submatrice
%semnul : reprezinta extragerea tuturor liniilor sau coloanelor
Exemplul 1:
>> a= [1 2 3;4 5 6;7 8 9] >> b=a(1:2,3) % formeaza submatricea de dimensiune 2*1 si consta din primele 2 %elemente din coloana a treia a matricei
Se va afisa: 3 6
Exemplul 2: >> a= [1 2 3;4 5 6;7 8 9] >> b=a(:,1:2) %extrage submatricea care contine coloanele de la 1 la 2
Se va afisa: 1 2 4 5 7 8
Exemplul 3: >> a= [1 2 3;4 5 6;7 8 9] >> b=a(:,2) % extrage submatricea care contine elementele coloanei 2
Se va afisa: 2 5 8
Exemplul 4: >> a= [1 2 3;4 5 6;7 8 9] >> b=a(1:2,: ) % extrage submatricea care contine liniile de la 1 la 2
Se va afisa: 1 2 3 4 5 6
Exemplul 5: >> a= [1 2 3;4 5 6;7 8 9] >> b=a(2,: ) % extrage submatricea care contine elementele liniei 2
Se va afisa: 4 5 6
6) Inlocuirea unei matrice cu o alta cu anumite conditii
>> a= [1 2 3;4 5 6;7 8 9] %definirea celor 2 matrici Se va afisa: 1 2 3 4 5 6 7 8 9 >> b=[0 1 1; 1 0 0;1 2 3] Se va afisa: 0 1 1 1 0 0 1 2 3 >> a(:,[1,2])=b(:,1:2)% permite inlocuirea coloanelor 1 si 2 cu primele 2 coloane %ale matricei b
Se va afisa: 0 1 3 1 0 6 1 2 9
7) Schimbarea elementelor unei matrici >> a= [1 2; 3 4] >> a( : )=12:15 %practic formeaza o matrice 2*2 cu elem de la 12 la 15
Se va afisa: 12 13 14 15
8) Inmultirea unei matrici cu ea insasi
Pentru aceasta scrieti in consola comenzile:
>> a = [ 1 2; 3 4 ] %definirea unei matrici >>a*a
% se poate scrie a la puterea 2 si >>a^2
9) Inumultirea a doua matrici
>> a = [ 1 2; 3 4 ] %definirea celor 2 matrici a si b >> b= [ 1 2; 0 1 ]
% pentru a inmulti a*b scrieti: >> a*b
% pentru a inmulti b*a scrieti: >> b*a
10) Suma a doua matrici:
>> a = [ 1 2; 3 4 ] %definirea celor 2 matrici a si b >> b= [ 1 2; 0 1 ] >> a+b
11) Suma intre 2 elemente ale unei matrici
>> a= [1 2 3;4 5 6;7 8 9] %definirea unei matrici Se va afisa: 1 2 3 4 5 6 7 8 9
Daca scriem comanda in consola>>a(3,3)=a(3,1)+a(1,3) Elementul a(3,3) va fi inlocuit cu suma dintre elem a(3,1) si a(1,3). Mai precis 9 va fi inlocuit cu a(3,1)=7; a(1,3)=3; a(3,1)+a(1,3)=10 deci se va afisa:
1 2 3 4 5 6 7 8 10
12) Transformarea unei matrici intr-un vector coloana
>> a= [1 2; 3 4] % definirea unei matrici >> b=a( : ) %afisarea sub forma de vector coloana
Se va afisa: 1 2 3 4
13) Inversarea elementelor unei matrici
>> a = [ 1 2; 3 4 ] %definirea celor 2 matrici a si b >> b= [ 1 2; 0 1 ] >> s=a+b % calculeaza suma celor 2 matrici definite anterior >> inv(s) % calculeaza inversa matricii s
Obs f.imp: matricea >> c= [1 1; 1 1] nu poate fi inversata deoarece determinantul ei este 0
14) Determinantul unei matrici
>> a = [ 4 2; 3 4 ] %definirea unei matrici >> det(a) %calculeaza determinantul matricii a
15) Transpusa unei matrici
Exemplu: >>y=[1 2; 3 4] >>z=y' %afiseaza matricea z ca fiind y transpus
Se va afisa:
z= 1 3 2 4
16) Afisarea diagonalei principale a unei matrici[b]
>> a= [1 2 3; 4 5 6; 7 8 9] %matrice 3*3(3linii,3coloane) >>diag(a)
Se va afisa: 1 5 9
Daca in schimb dati comanda >>diag(diag(a))
Se va afisa: 1 0 0 0 5 0 0 0 9
[b]17) Crearea unei matrici inferior triunghiulara( are 0 sub diagonala principala)
Pentru aceasta tastati in consola:
>> a= [1 2 3; 4 5 6; 7 8 9] %matrice 3*3(3linii,3coloane adica triunghiulara) >> tril(a) % conditia ca matricea sa fie inferior triunghiulara
Se va afisa:
1 2 3 0 5 6 0 0 9
18) Crearea unei matrici superior triunghiulara( are 0 deasupra diagonalei principale)
>> a= [1 2 3; 4 5 6; 7 8 9] %matrice 3*3(3linii,3coloane adica triunghiulara) >> triu(a) % conditia ca matricea sa fie superior triunghiulara
Se va afisa:
1 0 0 4 5 0 7 8 9
Obs. Dupa ce efectuati un test de la fiecare punct dati comanda: >>clear pentru a va genera(defini) voi o alta matrice
19) Eliminarea unor coloane dintr-o matrice
>>a=[10 12 13 14;15 16 17 18; 19 20 21 22;23 24 26 28]
Se va afisa:
10 12 13 14 15 16 17 18 19 20 21 22 23 24 26 28
>>a(:,[2,4])=[] %practic vom elimina coloanele 2 si 4 din matricea noastra prin atribuirea unei matrici vide
20) Functii de generare a matricilor
- eye(a)- genereaza o matrice unitate de dimensiunea matricii a citite anterior
Exemplu: >>a=[1 2;3 4] >>eye(size(a)) %afiseaza matricea unitate I2 cu 1 pe diag.principala
- zeros(a)- genereaza o matrice nula de dimensiunea matricii a citite anterior
Exemplu: >>a=[1 2;3 4] >>zeros(size(a))
-ones(a)-genereaza matricea compusa numai din elemente 1
Exemplu: >>a=[1 2;3 4] >>ones(size(a))
- rand(4,3)- genereaza o matrice 4*3 cu numere aleatoare intre 0 si 1(foloseste distributia uniforma)
-randn(2,3) -genereaza o matrice 2*3 cu numere aleatoare intre -1 si 1(foloseste distributia normala)
21) Testarea unei matrice goale
Se realizeaza cu ajutorul functiei isempty. Aceasta returneaza valoarea 1 daca matricea este goala si 1 in caz contrar
Exemplul1: >>a=[] >>isempty(a)
Se va afisa: ans=1
Exemplul2: >>a=[1 2; 3 4] >>isempty(a)
Se va afisa: ans=0
22) Calcule element cu element
Fie 2 matrici:
>>a=[1 2; 3 4] >>b=[2 2; 2 2] >>c=a.*b%inmulteste fiecare element
Se va afisa: c = 2 4 6 8
Obs: Pt comanda >>c=a./b %imparte element cu element
Se va afisa:
c = 0.5000 1.0000 1.5000 2.0000
23) Repetarea unei matrici de un anumit numar de ori cu ajutorul functiei repmat
>>u=[1 2; 3 4] >>v=repmat(u,1,4)
Se va afisa: v =
1 2 1 2 1 2 1 2 3 4 3 4 3 4 3 4
24) Functia sortrows - Sortarea unei coloane iar a doua coloana isi pastreaza valoarea asociata fiecarei valori din prima coloana
Exemplu:
>> a=[1.0000 9.2000 3.0000 8.8000 4.0000 8.6000 2.0000 0] %definirea matricei in consola
>> b = sortrows(a,1)
b =
1.0000 9.2000 2.0000 0 3.0000 8.8000 4.0000 8.6000
25) Setarea nr. negative dintr-o matrice la 0
>> a=[1 -1 2 -4 -5 -1 -2 3 -2 -3 1 1 2 3 5 -4 -9 -6 -8 6 1 9 9 9 9]
a =
1 -1 2 -4 -5 -1 -2 3 -2 -3 1 1 2 3 5 -4 -9 -6 -8 6 1 9 9 9 9
>> a(a<0)=0
a =
1 0 2 0 0 0 0 3 0 0 1 1 2 3 5 0 0 0 0 6 1 9 9 9 9
>>
26) Gasirea elementelor mai >0 la o matrice 5*5 (5linii * 5coloane)
>> a=[1 -1 2 -4 -5 -1 -2 3 -2 -3 1 1 2 3 5 -4 -9 -6 -8 6 1 9 9 9 9]
a =
1 -1 2 -4 -5 -1 -2 3 -2 -3 1 1 2 3 5 -4 -9 -6 -8 6 1 9 9 9 9
>>find(a>0)
>> find(a>0)
ans =
1 3 5 8 10 11 12 13 15 18 20 23 24 25
Afiseaza practic al catelea element din matrice este >0.
Primele trei elemente mai mari decat 0 din matrice sunt:
1 - adica primul element al matricei este >0 3 - adica al treilea element al matricei este >0 5 - adica al cincilea element al matricei este >0
S.a.m.d
27) Generarea unei matrici 5*5 cu valori random si afisarea elementelor cuprinse intre valorilor intre -1 si 3 (valorile >3 sunt inlocuite cu 3, iar valorile <-1 sunt inlocuite cu -1 cele care se integreaza in intervalul [-1 3] raman neschimbate
Exemplu:
>> M = ceil(10*rand(5))-5 M = min(max(M,-1) ,3) % clip between -1 and 3
M =
5 3 2 0 -4 -2 0 3 5 -1 2 -4 5 5 4 0 4 3 0 -4 4 0 -3 4 -3
M =
3 3 2 0 -1 -1 0 3 3 -1 2 -1 3 3 3 0 3 3 0 -1 3 0 -1 3 -1
28) Ordonarea crescatoare a elementelor primei coloane pastrand elementele celorlalte coloane intacte
De exemplu:
>> A=[5 8 2 25 4 56 85 65 55 8 99 6 4 44 5]
>>[out , in] = sort(A(:, 1)); Asort = A(in , : );
Vom obtine prima coloana ordonata crescator fara ca celelalte coloane sa fie afectate mai precis:
A = 4 44 5 5 8 2 8 99 6 25 4 56 85 65 55
29) Rangul unei matrice folosind functia rank
>> A=[1 2 3; 4 5 6; 7 8 9]
A =
1 2 3 4 5 6 7 8 9
>> B=rank(A)
30) Norma unei matrice folosind functia norm
>> A=[1 2 3; 4 5 6; 7 8 9]
A =
1 2 3 4 5 6 7 8 9
> C=norm(A)
C =
16.8481
31) Functia nnz pentru numararea elementelor diferite de 0 dintr-o matrice
>> A=[1 2 3; 4 5 6; 7 8 9]
A =
1 2 3 4 5 6 7 8 9
>> nnz(A)
ans =
9
32) Functia nonzeros -afiseaza sub forma unui vector coloana elementele care sunt diferite de 0
>> A=[1 2 3; 4 5 6; 7 8 9]
A =
1 2 3 4 5 6 7 8 9
>> nonzeros(A)
ans =
1 4 7 2 5 8 3 6 9
33) Functia colperm -permutare a coloanelor unei matrice de tip sparse(care contine si elemente =0)
>>help colperm
Exemplu:
>> A=[1 2; 0 1]
A =
1 2 0 1
>> B=colperm(A)
B =
1 2
>> A(:,B)
ans =
1 2 0 1
34) Calculare rang structural cu ajutorul functiei sprank pt.o matrice sparse
Exemplu:
>>A = [1 0 2 0 2 0 4 0 ] %definim matricea sparse ce contine si elemente nule
>>B = sparse(A); %eliminam zero-urile
>>sprank(A) %calcul rang structural cu functia sprank
ans = 2
>>rank(full(A)) %calculam rangul cu functia rank pentru matricea initiala sparse; cu full transformam matricea la care am eliminat zero-urile folosind matricea sparse in matricea initiala deci pentru matricea initiala calculam rangul cu ajutorul functiei rank de data aceasta
ans = 1
35) Functia nzmax
>> a=[1 2 0; 2 2 1; 3 3 11]
a =
1 2 0 2 2 1 3 3 11
>> help nzmax NZMAX Amount of storage allocated for nonzero matrix elements. For a sparse matrix, NZMAX(S) is the number of storage locations allocated for the nonzero elements in S. For a full matrix, NZMAX(S) is prod(size(S)). In both cases, nnz(S) <= nzmax(S) <= prod(size(S)). See also nnz, nonzeros, spalloc.
Reference page in Help browser doc nzmax
>> b=nzmax(a)
b =
9
36) Cum se inlocuiesc toate elementele nenule dintr-o matrice cu -1
>> A=[5 0 10; 0 3 7; 0 6 0]
>>A(find(A~=0,size(A,1)))=-
A =
-1 0 10 0 -1 7 0 -1 0
37) Afisarea tuturor permutarilor pentru o matrice data cu functia perms:
>>A = [1 2 3; 4 5 6; 7 8 9] >> perms(1:3)
38) Functia mat2str- transforma o matrice intr-un sir de caractere
Exemplu:
>> a=[1 2 ; 1 2]
a =
1 2 1 2
>> b=mat2str(a)
b =
[1 2;1 2]
39) Functia mat2cell -transforma o matrice intr-o celula
Exemplu:
>> a=[1 2; 1 2]
a =
1 2 1 2
>> b=[5 6; 7 8]
b =
5 6 7 8
>> c=mat2cell(a) Warning: Single input behavior is obsolete and will be removed in a future release of MATLAB. Use C={X} instead. > In mat2cell at 54
c =
[2x2 double]
>> d=mat2cell(b) Warning: Single input behavior is obsolete and will be removed in a future release of MATLAB. Use C={X} instead. > In mat2cell at 54
d =
[2x2 double]
>> strcat(c,d)
ans =
[2x4 double]
40) Introducere matrice cu valori complexe
Exemplu:
>> A=[2+3i 3-i 5-7i; 9+i 5+i 2-i; 2-i 3-4i 4+i] %matrice cu valori complexe >>B=real(A) %prima matrice B contine toate el.reale ale matricei A >>C=imag(A) %a doua matrice C contine valorile complexe ale matricei A >>celula1=mat2cell(B) %conversia matricei B in celula folosind functia mat2cell si stocare in variabila celula2 >>celula2=mat2cell(C) %conversia matricei C in celula folosind functia mat2cell si stocare in variabila celula2 >>strcat(cell1,cell2) %application fonction strcat pour la concatenation pour les variables cell1 et cell2
41) Comanda vertcat pentru concatenarea unor matrici de lungi diferite (concatenare pe coloana)
Exemplu:
>>A=[1;2;3;4] >>B=[11;2;3] >>C=vertcat(A,B)
42) Comanda issorted
Exemple:
Pentru un vector:
>>A = [5 12 33 39 78 90 95 107 128 131];
issorted(A)
ans=1
Intoarce valoarea 1 in caz de succes si 0 in caz contrar.
Pentru o matrice patrat magic folosim functia magic(suma pe linii=suma pe coloane=suma pe cele 2 diagonale=matrice patrat magic):
>>A = magic(5) A = 17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9
>>issorted(A, 'rows')
ans = 0
>>B = sortrows(A) B = 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9 17 24 1 8 15 23 5 7 14 16
>>issorted(B) ans = 1
Pentru vectori de celule(cell-array):
x = {'one'; 'two'; 'three'; 'four'; 'five'}; issorted(x) ans = 0
y = sort(x) y = 'five' 'four' 'one' 'three' 'two'
issorted(y)
43) Ordonarea elementelor unei matrici dupa ultima coloana
Exemplu:
Avem matricea:
>> a=[ 1 2 3 6 9 20 0; 1 3 6 9 8 9 3; 3 6 9 8 5 9 0; 3 6 9 8 5 9 2; 3 6 9 8 5 9 1; 3 6 9 8 5 9 0;]
Si vrem sa obtinem matricea:
a =
1 2 3 6 9 20 0 3 6 9 8 5 9 0 3 6 9 8 5 9 0 3 6 9 8 5 9 1 3 6 9 8 5 9 2 1 3 6 9 8 9 3
Vom realiza urmatoarea secventa de instructiuni in command window:
>>[val index] = sort(a(:,end)); >>a = a(index,: ); >>a %sa vedem noua valoare a matricei a
[val index] = sort(A(:,end)); A = A(index,: );
|
|