Documente Academic
Documente Profesional
Documente Cultură
Lab1 Tutorial MATLAB
Lab1 Tutorial MATLAB
Introducere n Matlab
Editor
Linia de comand
n Linia de comand se declar i se iniializeaz variabile, se execut funcii Matlab,
fiiere .m sau modele Simulink i se afieaz rezultate.
Editor
Editorul Matlab pune la dispoziie o interfa grafic pentru editarea de cod Matlab i
pentru debug.
Workspace set de variabile construit n timpul unei sesiuni de lucru Matlab i stocat n
memorie. Variabilele sunt adugate n workspace prin apel de funcii, rulare de fiiere surs
.m, executare de modele Simulink sau ncrcare de variabile salvate anterior n fiiere .mat.
Vizualizare coninut workspace : comanda who / whos.
% comentariu
a = 10; % nu se declar tipul variabilei; mediul i atribuie un tip implicit, n funcie de
valoarea de iniializare;
b = [0 2 5]; % declarare vector cu 3 elemente.
m = [0 2 5; 5 7 9; 1 4 3]; % declarare matrice 3x3
v_o = ones(1,10); % declarare vector linie cu zece elemente, iniializate cu valoarea
1;
v_z = zeros(10,1); % declarare vector coloan cu zece elemente, iniializate cu
valoarea 0;
v_z = rand(10,2); % declarare matrice 10x2 cu elemente aleatoare;
v_it = 1:100; % declarare vector linie ce conine toate numerele de la 1 la 100;
v_par = 0:2:100; % declarare vector linie ce conine toate numerele pare de la 0 la
100;
who - enumer n ordine alfabetic toate variabilele din spaiul de lucru active
whos listeaza n ordine alfabetic toate variabilele din spaiul de lucru active n
prezent, mpreun cu dimensiunile i tipurile lor.
x1 = b(2);
x2 = m(2,3);
xend = m(end,1); % end permite accesarea ultimei linii sau coloane.
!!! Dac nu cunoatei sintaxa unei funcii, tastai help nume_funcie n linia de comand
i vei avea acces la descrierea funciei i a parametrilor afereni.
Functii folosite:
sin
sawtooth (dinte de fierastrau)
dirac
step unit
Ex:
x = 0:1/100:2*pi;
y = sin(x);
x1 = 0:1/100:10*pi;
y1 = sawtooth(x1);
x2 = [-4 -3 -2 -1 0 1 2 3 4 5];
x3 = -5:1:5;
y2 = dirac(x3);
y3 = (x3 >= 0);
figure
subplot (411), plot (x,y); grid on;
subplot (412), plot (x1,y1); grid on;
subplot (413), plot (x2,y2); grid on;
subplot (414), stem (x3,y3); grid on;
4. TEME :
Important !
Matlab-ul, ca limbaj interpretat (i nu compilat), este optimizat pentru calculul matricial,
de aceea se recomand lucrul cu vectori/matrici i evitarea buclelor pentru a avea o bun
vitez de execuie.
M1=rand(300,300);
M2=rand(300,300);
R=zeros(300,300);
R2=zeros(300,300);
R3=zeros(300,300);
t=cputime;
for i=1:300
for j=1:300
for k = 1:300
R(i,j)=M1(i,k)*M2(k,j);
end
end
end
disp('inmultire cu 3 for-uri');
t2=cputime-t
t3=cputime;
for i=1:300
for j=1:300
a=M1(i,:);
b=M2(:,j);
R2(i,j)=a*b;
end
end
disp('inmultire cu vectori');
t4=cputime-t3
t5=cputime;
R3=M1.*M2;
disp('inmultire cu martici');
t6=cputime-t5
tiind c relaia de calcul pentru conversia unei imagini color n niveluri de gri este:
0.2989 * R + 0.5870 * G + 0.1140 * B , calculai i afiai imaginea n
niveluri de gri.
Rezultatul ar trebui s fie identic cu cel obinut n urma apelului funciei rgb2gray.
im=imread('atm.jpg');
s=size(im);
x=s(1);
y=s(2);
figure
subplot(1,3,1)
imshow(im);
img=rgb2gray(im);
subplot(1,3,2)
imshow(img);
myimg=zeros(255,255);
for i=1:x
for j=1:y
myimg(i,j)=0.2989*im(i,j,1)+0.5870*im(i,j,2)+0.1140*im(i,j,3);
end
end
subplot(1,3,3)
imshow(uint8(myimg));