%% Praktikum softverski alati 1 (13e032psa1) - Lab. vežba 2 % Primeri i zadaci za drugu laboratorijsku vežbu. %% primer 1 % U primeru se pokazuje kako se može generisati niz sa brojevima koji % odgovaraju uniformnoj raspodeli u intervalu (a b). Funkcija rand(M,N) % "vraća" matricu dimenzija MxN brojeva sa uniformnom raspodelom iz % intervala (0 1). Primer koda generiše niz (N=1) sa uniformnom raspodelom % iz intervala (a b). Kod dopuniti tako da se crta histogram elemenata % niza i da se određuju minimalna i maksimalna vrednost niza (primeri su % urađeni na prethodnim vežbama). Menjati parametre a i b i uočiti kako % utiču na rezultate. close all clear clc M=10000; a=21; b=105; x=a+(b-a)*rand(M,1); %% primer 2 % U primeru se pokazuje kako se može generisati niz sa brojevima koji % odgovaraju normalnoj, Gausovoj raspodeli sa zadatim parametrima. % Funkcija randn(M,N) "vraća" matricu dimenzija MxN brojeva sa normalnom % Gausovom raspodelom sa parametrima mi=0, sigma^2=1 (što je normalizovana % Gausova raspodela). Parametar mi je srednja vrednost, a parametar sigma^2 % je varijansa raspodele. Primer koda generiše niz (N=1) sa normalnom Gausovom % raspodelom sa zadatim mi i sigma^2. Kod dopuniti tako da se crta histogram % elemenata niza i da se određuju srednja vrednost i varijansa vrednosti % niza (koristiti funkcije mean i var). Menjati parametre mi i sigma_2 i % uočiti kako utiču na rezultate. close all clear clc M=10000; mi=11.3; sigma_2=0.025; x=mi+sqrt(sigma_2)*randn(M,1); %% primer 3 % U primeru se ilustruje rad sa polinomima. U MATLAB-u, funkcije koje "rade" s % polinomima, polinom "očekuju" u formi niza (vektor - red) sa % koeficijentima poređanim redom, tako da je na početku koeficijent uz % najveći stepen. Na primer, za %% % $P(x)=2x^7-1.2x^6+0.25x^4-x^2+x+7$ % % odgovarajući vektor bio bi p=[2 -1.2 0 0.25 0 -1 1 7]. % Funkcija roots(p) računa korene (nule) polinoma. Funkcija roots "vraća" % kolonu. Funkcija polival(p,x) računa vrednosti P(x) za zadati niz (ili % matricu) x. U datom primeru, za zadati polinom p računaju se nule % (koreni) i prebrojava se koliko ima realnih nula. Dopuniti kod tako da % se crta funkcija P(x) za opseg koji obuhvata realne nule. % Kog reda je polinom iz primera? Koliko ima nula? Koje su dimenzije niza % nule? Funkcija isreal(x), ako je x skalar, "vraća" true ukoliko je x % realan broj. close all clear clc p=conv([1 -3],[1 -2]); p=conv(p,[1 1]); nule=roots(p); broj_realnih=0; broj_kompleksnih=0; for br=1:length(nule) if isreal(nule(br)) broj_realnih=broj_realnih+1; realne(broj_realnih)=nule(br); else broj_kompleksnih=broj_kompleksnih+1; end end %% primer 4 % U primeru se ilustruje crtanje funkcije koja ima više segmenata. Koristi % se logiko adresiranje. U primeru se crta funkcija definisana kao: % % $$f(x)=\left\{\matrix{ 0, & x \leq 1 \cr % 2, & -1< x \leq 0 \cr % 2\cos(2\pi x), & 0< x \leq 3 \cr % 0, & 3< x } \right.$$ % % Na osnovu datog primera, napisati kod koji iscrtava funkciju: % % $$f(x)=\left\{\matrix{ 0, & x \leq 0 \cr % 0.5x, & 0< x \leq 2 \cr % e^{-(x-2)}, & 2< x } \right.$$ close all clear clc x=-10:0.001:10; % korak je 0.001 y=zeros(size(x)); y(x>-1 & x<=0)=2; y(x>0 & x<=3)=2*cos(2*pi*x(x>0 & x<=3)); plot(x,y),xlim([-10 10]),ylim([-3 3]); %% primer 5 % U primeru se ilustruje "izvoz" podataka u formi *csv fajla. Na osnovu % datog primera generisati fajl podaci.csv. Formirati niz t kao kolonu s % početnom vrednošću nula, s krajnjom vrednošću 1 i sa korakom 0.01. % Formirati niz - kolonu x kao % % $x=\sin(2\pi ft), f=1000$ % % Formirati matricu A kao matricu od dve kolone, A=[t x]; Sadržaj matrice A % zapamtiti kao fajl podaci.csv. close all clear clc B=randn(25,7); csvwrite('podaci_proba.csv',B); %% primer 6 % U primeru se ilustruje formiranje niza unosom elemenata sa tastature. % Sačuvajte dati kod kao poseban *.m fajl (uklonite oznake za komentar), %pokrenite i pratite šta se događa. % close all % clear % clc % N=5; % for br=1:N % x(br)=input(['unesite element niza sa indeksom: ' num2str(br) ' ']); % end % figure,plot(x,'ro'); %% zadatak 1 % Napisati funkciju koja za zadati niz određuje verovatnoću nekog % intervala, kao odnos broja elemenata koji su u zadatom intervalu i ukupne % dužine niza. % Napisati script koji generiše niz x kao niz - vektor kolonu od N=10000 % elemenata, brojeva sa Gausovom raspodelom srednje vrednosti nula i % varijanse 5. Script treba da poziva prethodno napisanu funkciju za % interval [-5 5]. %% zadatak 2 % Napisati funkciju koja crta polinomsku funkciju za zadati interval. % Funkcija treba da ucrta i realne nule - korene polinoma ako pripadaju % zadatom intervalu. % Napisati script koji formira polinom tako što se sa tastature zadaje red % polinoma, a zatim se, jedan po jedan, zadaju i koeficijenti polinoma. % Script treba da poziva prethodno napisanu funkciju za granice intervala % koje se takođe zadaju s tastature. %% zadatak 3 % Napisati funkciju koja crta polinomsku funkciju za zadati interval. % Funkcija treba da ucrta i lokalne minimume i maksimume ako pripadaju % zadatom intervalu. % Napisati script koji formira polinom tako što se sa tastature zadaje red % polinoma, a zatim se, jedan po jedan, zadaju i koeficijenti polinoma. % Script treba da poziva prethodno napisanu funkciju za granice intervala % koje se takođe zadaju s tastature.