%% Praktikum softverski alati 1 (13e032psa1) - Lab. vežba 1 % Primeri i zadaci za prvu laboratorijsku vežbu. %% primer 1 % U primeru se na tri načina definiše matrica puna jedinica. Prvi način je % for petlja bez prethodnog alociranja memorije, drugi način je for petlja % sa alociranjem memorije i treći način je direktno definisanje matrice % korisšćenjem odgovarajuće funkcije. Vreme potrebno za izvršavanje delova % koda proverava se pomoću para naredbi tic-toc, gde je toc vraća vremenski % interval između tic i toc. Poređenjem se može utvrditi da je vreme % najkraće kada se izbegne korišćenje for petlje. Ovo uopšte važi, da je % bolje izbegavati for petlju kada je moguće isti rezultat dobiti na neki % drugi način. Proveriti da li se na sva tri načina dobija potpuno % isti rezultat. close all clear clc M=1000; N=500; % prvi način tic; for br_1=1:M for br_2=1:N x(br_1,br_2)=1; end end t1=toc; % drugi način tic; y=zeros(M,N); for br_1=1:M for br_2=1:N y(br_1,br_2)=1; end end t2=toc; % treći način tic; z=ones(M,N); t3=toc; display([t1 t2 t3]); %% primer 2 % U primeru se na nekoliko načina izdvaja podniz iz nekog niza x, % izdvajanjem elemenata počev od indeksa P zaključno sa indeksom K. Niz x % je, kao primer, dobijen kao niz, vektor kolona dužine M slučajnih brojeva % sa Gausovom raspodelom sa srednjom vrednošću 0 i varijansom 1. % Da li se na sve načine dobijaju potpuno isti rezultati? % Kada se kao rezultat dobija vrsta a kada kolona? % Koje su dužine dobijenih nizova? % Zašto prvi način nije adekvatan? close all clear clc M=1000; P=201; K=900; x=randn(M,1); % prvi način for br=P:K y1(br)=x(br); end % drugi način for br=1:K-P+1 y2(br)=x(br+P-1); end % treći način for br=P:K y3(br-P+1)=x(br); end % četvrti način for br=P:K y4(br-P+1,1)=x(br); end % peti način y5=x(P:K); %% primer 3 % U primeru se na dva načina formiraju podnizovi niza x od kojih prvi % sadrži elemente niza x sa neparnim (1, 3, 5,..) a drugi sa parnim (2, 4, % 6...) indeksima. I u ovom slučaju moguće je zaključiti da je kraće vreme % potrebno u slučaju kada se ne koristi for petlja. % Šta se dešava kada se M promeni tako da bude neparan broj? % Popraviti deo koda koji ne koristi for petlju tako da radi i za neparno % M. % Ponoviti primer za slučaj kada se niz deli na tri podniza tako da u % prvom budu elementi polaznog niza sa indeksima 3k+1, u drugom sa % indeksima 3k+2 i u trećem sa indeksima 3k. close all clear clc M=1000; x=randn(M,1); % prvi način tic for br=1:M/2 y(br,1)=x(2*br-1); y(br,2)=x(2*br); end t1=toc; tic z(:,1)=x(1:2:end); z(:,2)=x(2:2:end); t2=toc; display([t1 t2]); %% primer 4 % Primer ilustruje situaciju kada se pri računskim operacijama dobijaju % rezultati koji su Inf i koji su Nan (not a number). Ukoliko se u nekom % sledu oeracija broj koji nije nula deli s nulom, dobija se Inf (beskonačna % vrednost), a ako se nula deli s nulom dobija se Nan. Kada se neki broj % deli s Inf dobija se 0 a bilo koja dalja operacija sa Nan ostaje Nan. close all clear clc x=[0 1 -1]/0 y=3*x p=isinf(y) q=isnan(y) z=1./y u=isinf(z) v=isnan(z) %% primer 5 % Primer ilustruje crtanje dve krive na istom grafiku i crtanje dve krive % na dva grafika u okviru iste figure. Pre svakog pozivanja funkcije plot, % otvara se nova slika (nov prozor) pomoću figure. Krive su tako formirane % da prva sadrži jednu Inf tačku a druga jednu Nan tačku koje se pri % crtanju preskaču. Promeniti kod u delu koji se odnosi na niz y tako da se % "dodefiniše" tačka za koju se u primeru dobija vrednost Nan. close all clear clc x=(-5:0.1:5)'; y=sin(x)./x; y(x==0) z=1./abs(x); z(x==0) figure,plot(x,y,x,z); title('Slika 1'); figure,plot(x,y); hold on plot(x,z); title('Slika 2'); figure,plot(x,[y z]); title('Slika 3'); figure,plot(x,[y'; z']); title('Slika 4'); figure, subplot(2,1,1),plot(x,y); title('Slika 5a'); subplot(2,1,2),plot(x,z); title('Slika 5b'); figure, subplot(1,2,1),plot(x,y); title('Slika 6a'); subplot(1,2,2),plot(x,z); title('Slika 6b'); %% primer 6 % Primer ilustruje polarne grafike. Nacrtati polarni grafik koji liči na % cvet sa avatara kursa na MS Teams-u. close all clear clc teta=(0:0.01*pi:2*pi-0.01*pi)'; x=sin(teta); x2=sin(2*teta); x4=sin(4*teta); x7=sin(7*teta); y=cos(teta); figure,plot(teta,x,teta,y); figure,polarplot(teta,x.^2,teta,y.^2); figure,polarplot(teta,sin(x2),teta,sin(x4),teta,sin(x7)); figure,polarplot(teta,teta/(2*pi)); %% primer 7 % Primer ilustruje 3-D grafike. Funkcija meshgrid pravi matrice x i y koje % odgovaraju delu x,y ravni od interesa. Zadaju se granične vrednosti i % rezolucija. Matrica x i y su jednakih dimenzija. Matrica z formira se kao % matrica jednakih dimenzija korišćenjem operacija tipa "element po % element". Promenite funkciju kojom se definiše z i uočite kako se menjaju % grafici. close all clear clc [x,y]=meshgrid(-2:0.01:2); z=x.^2+y.^2; figure,mesh(x,y,z); xlabel('x'); ylabel('y'); zlabel('z'); figure,mesh(x,y,z); xlabel('x'); ylabel('y'); zlabel('z'); colormap('gray'); figure,contour(x,y,z); xlabel('x'); ylabel('y'); zlabel('z'); figure,mesh(x,y,z); xlabel('x'); ylabel('y'); view(90,90); %% primer 8 % Primer ilustruje kako se "uparuju" x i y po dimenzijama kada se koristi % plot za crtanje. Funkcija length "vraća" dužinu niza. U primeru je x % definisano kao kolona. Ponovite primer za slučaj kada se x definiše kao vrsta. close all clear clc N=50; x=(0:N-1)'; y=randn(length(x),3); figure,plot(x,y); title(num2str(size(y))); figure,plot(x,y'); title(num2str(size(y'))); figure,plot(x,y); hold on plot(x,y(:,1),'o'); %% primer 9 % Primer ilustruje slučajeve kada se matrica tretira kao niz kolona. % Funkcija rand "vraća" matricu slučajnih brojeva sa uniformnom raspodelom % u intervalu [0 1]. Dimenzije matrice x su M redova i N kolona (N nizova % po M elemenata). Određene funkcije "rade" na principu kolona po kolona % ili red po red. Obično je podrazumevano "po kolonama". % Pokušajte da promenite kod tako da se ispisuju maksimalna odnosno % minimalna vrednost u okviru cele matrice (a na po kolonama). close all clear clc M=1000; N=5; x=rand(M,N); minimum=min(x) maksimum=max(x) sr_vr_kolone=mean(x,1) sr_vr=mean(x) sr_vr_vrste=mean(x,2); figure,subplot(2,1,1),plot(x); title([num2str(N) ' krivih od po ' num2str(M) ' tačaka']); subplot(2,1,2),plot(sr_vr_vrste); ylim([0 1]); title('srednja vrednost po vrstama'); figure,subplot(2,1,1),plot(1:N,x); title([num2str(M) ' krivih od po ' num2str(N) ' tačaka']); subplot(2,1,2),plot(sr_vr_kolone,'o'); ylim([0 1]); title('srednja vrednost po kolonama'); z=sum(x)/M; size(z) y=sum(x,2)/N; size(y) %% primer 10 % Primer ilustruje crtanje histograma. Formiraju se 4 niza (koja se spoje u % jednu matricu) tako da su elementi slučajni brojevi sa uniformnom % raspodelom. Nizovi su dužine N i suma je dužine N. Crta se raspodela sume. % Ponoviti primer za M=20 i M=10000. % Ponoviti primer tako što se funkcija rand zamenjuje funkcijom randn. % Funkcija randn "vraća" matricu slučajnih brojeva sa Gausovom raspodelom % srednje vrednosti 0 i varijanse 1. close all clear clc M=1000; x=rand(M,4); y=sum(x,2)/4; figure,subplot(5,1,1),histogram(x(:,1)); subplot(5,1,2),histogram(x(:,2)); subplot(5,1,3),histogram(x(:,3)); subplot(5,1,4),histogram(x(:,4)); subplot(5,1,5),histogram(y);