Sunteți pe pagina 1din 19

Laborator 2

MATLAB

matrici
operatori logici si relationali
instructiuni de control
Vectori

Scrieti utmatoarele comenzi ptr a crea vectorii:
X= [1 2 3 4 5] Y=[6; 7; 8; 9; 10] size(Y) Z= Y’ size(Z)
W=[X Z] T=[ X; Z] M = [2 : 0.5 : 4]

Selectia din vector:
a=W(5) b =W(5:9) c=W(2:2:8) d= W([3 5 2 9])

Folosind operatorul : creati vectorii v1,v2,v3 si v4 :
1) 2, 4, 6, 8,...100 dar cu functia linspace()
2) 50, 48, 46,...-50
3) 1, 1/2, 1/3,...1/100
4) 0, 1/2, 2/3, 3/4...99/100
5)Folosind end (ultimul index al unui vector/matrice)
ptr un anumit vector, afisati vectorul elementelor
impare si vectorul elementelor in ordine inversa.
Ptr matricea M de la a) inversati coloanele, apoi liniile.
Vectori - Rezolvare

1)>> v1= 2:2:100 sau


>> v1 =linspace(2,100,50)

2)>> v2=50:-2:-50
3)>> vt=1:100; v3=1./vt
4)>> vr=0:99; vp=1:100; v4=vr./vp
5)>> v5=1:100; vi=v5(1: 2: end)
>>vinv=v5(end: -1: 1)
>> [nl,nc]=size(M) cc=M(:, nc:-1:1) ll=M(nl:-1:1, :)
Matrici

Se da matricea M = [1 2 3 4;
2 4 6 8;
-1 -2 -3 -4;
0 5 0 7]

• Sa se extraga elementul de pe linia 1 si coloana 3-a


• Prima linie
• Coloana a 2-a
• Submatricea determinata de liniiele 1, 2 si 4 si de
coloanele 2, 3 si 4
Matrici- Rezolvare

Introducerea matricei M:
>> M=[1 2 3 4; 2 4 6 8; -1 -2 -3 -4; 0 5 0 7];

Extragerea elementului de pe linia 1 şi coloana 3:
>> M(1,3) ans=3

Extragerea primei linii:
>> M(1,:) ans= 1 2 3 4

Extragerea coloanei a 2-a:
>> M(:,2) ans= [2; 4;-2; 5]

Extragerea submatricei determinată de liniile 1,2 şi 4 şi
de coloanele 2, 3 şi 4:
>> M([1,2,4],2:4) ans=[2 3 4; 4 6 8; 5 0 7]

Matricea M nefiind reatribuita in mod explicit, nu a fost


afectata de niciuna din operatiile de mai sus: >>M
Matrici

Creati urmatoarea matrice :

M= 1 2 3 4 5
11 12 13 14 15
21 22 23 24 25

Scrieti comanda ce va inlocui elementele din liniile 1 si 2


si coloanele 1 si 2 din matricea M cu valoarea 5

M= 5 5 3 4 5
5 5 13 14 15
21 22 23 24 25
Matrici- Rezolvare


Cream vectorul v :
>> v=[1 2 3 4 5]

Cream matricea M:
>> M = [v ; v+10; v+20;]

Extragerea primei linii:
>> M(1:2, 1:2) =5
Generarea matricilor cu numere aleatoare
Utilizand:
functia rand, pentru numere aleatoare, cu distributie
uniforma in intervalul (0,1) sau
functia randn, pentru numere aleatoare cu distributie
normala (Gaussiana), de medie zero si varianta unu.
functia randi pentru numere intregi intr-un anumit
interval ( ultimul parametru specificand dimensiunea)
Instructiunile pentru generarea matricelor cu numere
aleatoare au formele :
x = rand(n), y = rand(m,n), z = rand(size(A)),
v=randi([5,10] ,n) sau vv = randi([5,10], m,n)
unde m si n sunt scalari, iar A este o matrice oarecare.

Alte functii de generare a matricilor :magic(n), pascal(n)


Concatenarea matricilor
>> ra=randi([5,15], 3)
>>rra=randi([20,50], 3,6)
>> x= rand(3)*10
>> y=rand(3)*100
>> z=[x,y]
>> w=[x;y]
>> xx=horzcat(x,y)
>>yy=vertcat(y,x)

>> a= magic(3)
>> aa= rand(3,4)
>> b=rand(3,5)
>> bb=rand(4,4)
>> c=[a,b]
>> d= cat(2,a,b)
>> e=horzcat(aa,b,a)
>> f=cat(1,aa,bb)
Matrici

Folosind concatenarea si functiile zeros() , ones() si eye()


generati urmatoarea matrice:
0 0 0 5 0 0
0 0 0 0 5 0
0 0 0 0 0 5
2 0 1 3 3 3
1 1 1 3 3 3
2 2 2 3 3 3
Matrici Rezolvare

>> M=[zeros(3) 5*eye(3); X 3*ones(3)]


Matrici diagonale – functia diag(v,k)

v -vector, specifica vectorul de pe diagonala


k – scalar, specifica distanta de la diagonala
principala, k>0 deasupra diagonalei principale,
k<0 dedesuptul diagonalei principale

0 0 1 0 0 0
0 0 0 1 0 0
0 0 0 0 1 0
-2 0 0 0 0 1
0 -2 0 0 0 0
0 0 -2 0 0 0
Matrici diagonale - Rezolvare diag(v,k)

>> D=-2*diag(ones(1,3),-3)+diag(ones(1,4),2)
Exercitiu 4

• Sa se genereze matricele patratice A si B, de ordinul


4, definite prin relatiile de mai jos. Sa se afiseze suma
lor, produsul lor, cubul matricei A, rezultatul
impartirii la stanga a matricei A prin B si rangul
matricei B. Rezolvarea problemei sa se faca prin
utilizarea unui fisier script
Rezolvare exercitiu 4

Crearea unui fisierul script numit my_opera.m
>> edit my_opera

Scrierea comenzilor in fisierul script
disp('generarea matricei A')
for i=1:4
for j=1:4
A(i,j) = 1/(i+j);
end
end
disp(A)
disp('generarea matricei B')
for i=1:4
for j=1:4
if i==j B(i,j)=1;
elseif i>j B(i,j)=i+j;
else B(i,j)=i-j;
end end end disp(B)
Rezolvare exercitiu 4

% afisarea matricei A
A

% afisarea matricei B
disp('matricea B')
disp(B)

% calculul si afisarea sumei
suma=A+B

% calculul si afisarea produsului
produs=A*B

% calculul si afisarea cubului matricei A
cub_A=A^3

% calculul si afisarea rezultatului impartirii la stanga
disp('Rezultatul impartirii A\B este')
Rez=A\B

% rangul matricei B
rang_B=rank(B)
Rezultat exercitiu 4

Rularea fişierului script se face din linia de comandă:
>> my_opera

A =0.5000 0.3333 0.2500 0.2000


0.3333 0.2500 0.2000 0.1667
0.2500 0.2000 0.1667 0.1429
0.2000 0.1667 0.1429 0.1250
matricea B
1 -1 -2 -3
3 1 -1 -2
4 5 1 -1
5 6 7 1
suma = 1.5000 -0.6667 -1.7500 -2.8000
3.3333 1.2500 -0.8000 -1.8333
4.2500 5.2000 1.1667 -0.8571
5.2000 6.1667 7.1429 1.1250
Rezultat exercitiu 4
produs = 3.5000 2.2833 0.3167 -2.2167
2.7167 1.9167 0.4500 -1.5333
2.2310 1.6405 0.4667 -1.1738
1.8964 1.4310 0.4512 -0.9512

cub_A = 0.4516 0.3263 0.2571 0.2127


0.3263 0.2358 0.1859 0.1538
0.2571 0.1859 0.1465 0.1213
0.2127 0.1538 0.1213 0.1004

Rezultatul impartirii A\B este


Rez = 1.0e+004 *
-0.0600 0.2380 -0.4940 -0.1420
0.4620 -1.5900 3.7980 1.0920
-0.9660 2.8980 -7.7280 -2.2260
0.5880 -1.5680 4.5640 1.3160
rang_B = 4
De citit si exercitii !

Stormy Attaway, Matlab, A Practical Introduction to Programming


and Problem Solving, 3rd Edition, 2013 Elsevier Inc.

Capitolul 2 - Vectori si Matrici


Sumarul de la paginile 27 si 66

Exercitiile de la sfarsitul Capitolului 2

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