matcap8
DESCRIPTION
cursuri de facultate in romana MatLabTRANSCRIPT
-
8. GENERAREA VECTORILOR l A MATRICELOR UZUALE
Funciile folosite pentru generarea vectorilor i a matricelor uzuale sunt:zeros Genereaz matricea nul;ones Genereaz matricea unitate;eye Genereaz matricea identic;rand Genereaz numere aleatoare cu distribuie uniform;randn Genereaz numere aleatoare cu distribuie normal;linspace Genereaz un vector cu pas liniar;logspace Genereaz un vector cu pas logaritmic;meshgrid Genereaz o matrice a reelei n planul X-Y;: Genereaz un vector cu pas constant.
8.1. Generarea vectorilor
8.1.1. Generarea vectorilor cu pas liniar
Generarea vectorilor cu pas liniar implic cunoaterea limitelor intervalului (amin iamax) i a pasului dintre dou elemente (pas), sau numrul de elemente ale vectorului.Metoda de generare a vectorului se alege funcie de datele de intrare. Dac se cunosclimitele intervalului (amin i amax) i pasul (pas) dintre dou elemente, se genereazvectorul cu instruciunea:
x = amin : pas : amaxunde: amin, amax i pas sunt scalari i pot avea orice valoare real. Numrul de elemente ale vectorului rezultant x este:
unde [ ]" semnific partea ntreag a rezultatului expresiei dintre paranteze. Instruciunea presupune c:
- dac pas > 0, atunci este necesar ca amin < amax,- dac pas < 0, atunci este necesar ca amin > amax.
Spre exemplu:x = 2:5:25 x = -20:3:10 x = 5:-2:-4 x =-15:-3:-25 x = 5:15
sunt corecte, n timp ce urmtoarele instruciuni: x = 2:-1:5 x = -5:2:-10
UPGIM
E
-
sunt incorecte.Dac pasul se omite, valoarea acestuia este considerat implicit egal cu unitatea.
Dac se cunosc limitele intervalului (amin i amax) i numrul de elemente (N) alevectorului generat cu pas liniar, atunci se folosete instruciunea:
x = linspace(amin, amax, N) Pasul dintre dou elemente rezult egal cu:
Dac valoarea N este omis, atunci aceasta este considerat implicit egal cu 100. Valorilelimitelor intervalului, amin i amax, nu sunt supuse niciunei restricii i pot fi date n oriceordine (dac amin > amax vectorul generat va fi ordonat descresctor).
Exemplul 8.1.1. S se genereze un vector cu pas liniar, cu limitele:amin =2.5, amax = 7 i pasul egal cu 1.25. Secvena:
x = 2.5 : 1.25 : 7 conduce la rezultatul:
x = [2.5000 3.7500 5.0000 6.2500]
Exemplul 8.1.2. S se genereze un vector cu pas liniar, cu limitele : amin = 2.5, amax = 7 i N = 4 elemente. Secvena:
x = linspace(2.5, 7, 4) conduce la rezultatul:
x = [2.5000 4.0000 5.5000 7.0000]Dei genereaz acelai numr de elemente, prima secven controleaz pasul i
poate modifica eventual limita superioar, iar a doua controleaz numrul de elemente imenine limitele impuse.
8.1.2. Generarea vectorilor cu pas logaritmic
Funcia logspace genereaz vectori cu pas logaritmic; se apeleaz cu sintaxa:x = logspace(amin, amax, N)
Vectorul x conine N elemente distribuite logaritmic ntre decadele [10amin, 10amax]. Dacnumrul de elemente N este omis, se genereaz un vector cu 50 elemente distribuitelogaritmic ntre decadele [10amin , 10amax]. Dac amax=n, elementele vectorului suntdistribuite ntre 10amin i n. Valorile limitelor intervalului, amin i amax, nu au nici o restricie ipot fi date n orice ordine. Dac amin > amax, vectorul generat va fi ordonat descresctor.
Exemplul 8.1.3. S se genereze un vector cu N=5 elemente distribuite logaritmic peintervalul [10-2 , 102]. Secvena:
x = logspace(-2, 2, 5) determin rezultatul:
x = [ 0.0100 0.1000 1.0000 10.0000 100.0000]
UPGIM
E
-
Exemplul 8.1.4. S se genereze un vector cu N=6 elemente distribuite logaritmic peintervalul [10-2, pi]. Secvena:
x = logspace(-2, pi, 6)determin rezultatul:
x= [0.0100 0.0316 0.0997 0.3150 0.9948 3.1416]
8.2. Generarea matricelor
8.2.1. Matricea goal
Dei n MATLAB nu exist instruciuni pentru declararea tipurilor de variabile, iarmatricele se autodimensioneaz n timpul utilizrii, pentru a crete viteza de lucru seprocedeaz la crearea unei matrice goale. Acest lucru se face la nceputul sesiunii de lucrusau la apelarea unui program. Declararea unei matrice goale se face cu instruciunea:
X = [] care asigneaz lui X matricea de dimensiuni 0x0.
Orice matrice goal trebuie sa aib cel puin una din dimensiuni zero. Pentru a testadac o matrice X este goal, se folosete funcia MATLAB isempty, care se apeleaz cusintaxa:
r = isempty(X) i retumeaz n variabila r valoarea 1 dac X este matrice goal i 0 n caz contrar.
8.2.2. Matricea unitate
Matricea unitate este o matrice cu toate elementele 1:
i poate fi generat cu funcia ones; se apeleaz cu una dintre sintaxele:U=ones(n) U=ones(m,n) U=ones(size(A))
unde m i n sunt scalari, iar A este matrice. Dac funcia ones este apelat cu un singurargument scalar, matricea generat este o matrice ptrat avnd dimensiuneaargumentului. Apelat cu dou argumente scalare (m,n), matricea generat are m linii in coloane. Dac funcia ones are ca argument o matrice A, matricea generat este omatrice unitate de aceleai dimensiuni cu matricea A.
Exemplul 8.2.1. S se genereze o matrice unitate cu dimensiunea 2x2 i o matrice unitate cu dimensiunea 2x3. Cu secvena:
Al=ones(2) A2=ones(2,3)
UPGIM
E
-
S se
genereze o matrice unitate de aceleai dimensiuni cu matricea A. Cu secvena:A=[l 3 9; 5 7 2 ] ;
U=ones(size(A)) se obine rezultatul: U =
1 1 11 1 1
8.2.3. Matricea zero
Matricea zero este o matrice cu toate elementele zero:
i poate fi generat cu funcia zeros, care se apeleaz cu una dintre sintaxele:O= zeros(n) O= zeros(m,n) O= zeros(size(A))
unde m i n sunt scalari, iar A este matrice. Dac funcia zeros este apelat cu unsingur argument scalar, matricea generat este o matrice ptrat avnd dimensiuneaargumentului. Apelat cu dou argumente scalare (m,n), matricea generat are m liniii n coloane. Dac funcia zeros are ca argument o matrice A, matricea generat este omatrice zero de aceleai dimensiuni cu matricea A.
8.2.4. Matricea identitate
Matricea identitate este o matrice care are elementele de pe diagonala principal egale cu unu, iar toate celelalte egale cu zero:
se obine rezultatul:
UPGIM
E
-
Se genereaz cu funcia eye, care se apeleaz cu una dintre sintaxele:l= eye(n) l= eye(m,n) l= eye(size(A))
unde m i n sunt scalari, iar A este matrice. Dac funcia eye este apelat cu un singurargument scalar, matricea generat este o matrice ptrat avnd dimensiuneaargumentului. Apelat cu dou argumente scalare (m,n), matricea generat are m liniii n coloane. Dac funcia eye are ca argument o matrice A, matricea generat este omatrice identitate de aceleai dimensiuni cu matricea A.
Exemplul 8.2.3. S se genereze o matrice identitate cu dimensiunea 2x2 i o matrice identitate cu dimensiunea 2x3. Cu secvena:
A1=eye(2); A2=eye( 2 , 3 ) se obine rezultatul:
S se genereze o matrice identitate de aceleai dimensiuni cu matricea A. Cu secvena:A= [ 1 3 9; 5 7 2 ] ; I =eye(s i ze (A ) ) se obine rezultatul: 1 =
1 0 00 1 0
8.2.5. Matricea aleatoare
Generarea matricelor cu numere aleatoare se poate face cu: funcia rand pentru numere aleatoare cu distribuie uniform n intervalul (0.0, 1.0); funcia randn pentru numere aleatoare cu distribuie normal (Gaussian), de medie
zero i variant unu.Sintaxele pentru generarea matricelor cu numere aleatoare sunt:
Ru=rand(n) Rn=randn(n)Ru=rand(m,n) Rn=randn(m,n)Ru=rand(size(A)) Rn=randn(size(A))
unde m i n sunt scalari, iar A este matrice. Dac funciile rand i randn sunt apelate cuun singur argument scalar, matricea generat este o matrice ptrat avnddimensiunea argumentului. Apelat cu dou argumente scalare (m,n), matriceagenerat are m linii i n coloane. Dac funciile rand i randn au ca argument o matriceA, matricea generat este o matrice aleatoare de aceleai dimensiuni cu matricea A.
UPGIM
E
-
Pentru simularea experienelor care comport aceleai condiii se genereaz serii denumere aleatoare la care se controleaz un parametru de iniializare al generatorului, seed.Rand(seed) sau randn('seed') - retumeaz valoarea curent a numrului seed";rand(seed',n) sau randn('seed',n) - seteaz numrul seed" la valoarea n.
Exemplul 8.2.5. S se genereze o matrice aleatoare cu dimensiunea 2x2 i o matrice aleatoare cu dimensiunea 2x3 cu elementele distribuite uniform i normal. Cu secvena:Rlu=rand(2) Rln=randn(2) R2u=rand(2,3) R2n=randn(2 , 3)se obin rezultatele:
R1u= R2u =0.6521 0.6813 0.8456 0.9554 0.14820.1503 0.3858 0.5901 0.5561 0.9833
R1n= R2n =0.3877 0.1475 0.4142 -1.0215 1.51610.4997 0.5872 -0.9778 0.3177 0.7494
S se genereze cte o matrice aleatoare de aceleai dimensiuni cu matricea A, cu numerele distribuite uniform i normal. Cu secvena:A=[l 3 9; 5 7 2]; Ru=rand(size(A)) Rn=randn(size(A)) se obine rezultatul:
Ru = Rn =0.9611 0.1998 0.6293 -0.2091 -1.0639 1.13300.1260 0.3192 0.1267 0.5621 0.3516 0.1500
8.3. Generarea unei reele (mesh)
Funcia meshgrid transform domeniul specificat prin vectorii x i y n tablourile Xi Y care pot fi folosite att pentru evaluarea funciilor de dou variabile, ct ipentru reprezentri 3D de tipul mesh sau surface. Se apeleaz cu una dintre sintaxele:
[X, Y]=meshgrid(x, y) [X, Y]=meshgrid(x)i retumeaz datele n tablourile X i Y, care sunt sunt copii ale vectorului x i ale vectorului y. Cu alte cuvinte, funcia meshgrid retumeaz n tablourile X i Y perechile de coordonate
UPGIM
E
-
ale tuturor punctelor din domeniul definit de vectorii x i y. Pentru exemplificare vezi figura 8.1.
cu pasul 2 pe axa Ox i pasul 1 pe axa Oy. Cu instruciunea:
[X, Y]=meshgrid (-2: 2:2, -2: 2) se obine rezultatul:
X= Y =-2 0 2 -2 -2 -2-2 0 2 -1 -1 -1-2 0 2 0 0 0-2 0 2 1 1 1-2 0 2 2 2 2
UPGIM
E