This shows you the differences between two versions of the page.
| — |
zadatak_2 [2012/02/03 14:38] (current) milos.simic created |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ===== Postavka problema ===== | ||
| + | //Za datu matricu (proizvoljnih dimenzija) u datoteci matrica.txt, odrediti za svaku kolonu njenu srednju, minimalnu i maksimalnu vrednost. Zatim za svaku kolonu odrediti koliko se srednja vrednost kolone razlikuje od aritmetičke sredine minimalne i maksimalne vrednosti i te rezultate upisati u datoteku odstupanje.txt.// | ||
| + | |||
| + | ==== Matrica proizvoljnih dimenzija i vrednosti ==== | ||
| + | <file m pomocna.m> | ||
| + | % Generisanje matrice proizvoljnih dimenzija | ||
| + | a=round(100-99*rand(1,1)) % broj vrsta | ||
| + | b=round(100-99*rand(1,1)) % vroj kolona | ||
| + | M=100-99*rand(a,b); | ||
| + | |||
| + | save matrica.txt a b M | ||
| + | </file> | ||
| + | |||
| + | Koristili smo se funkcijom //rand// kako bismo zaokruglili dobijeni broj, posto matrica ne moze imati razlomljen broj vrsta ni kolona. | ||
| + | |||
| + | ==== Glavna skripta ==== | ||
| + | <file m glavna.m> | ||
| + | % Ucitavanje matrice proizvoljnih dimenzija | ||
| + | % i prikazivanje iste | ||
| + | load matrica.txt a b M | ||
| + | a | ||
| + | b | ||
| + | vektor=[]; | ||
| + | domen=1:1:b; | ||
| + | for i=domen | ||
| + | kolona=M(:,i); | ||
| + | minimum=min(kolona); | ||
| + | maksimum=max(kolona); | ||
| + | asrmm=(minimum+maksimum)/2; | ||
| + | prosek=mean(kolona); | ||
| + | vektor=[vektor abs(prosek-asrmm)]; | ||
| + | end | ||
| + | |||
| + | plot(domen,vektor,'rv'); | ||
| + | xlabel('Kolona'); | ||
| + | ylabel('Razlika'); | ||
| + | legend('Odstupanjе u kolonama','Location','Northeast'); | ||
| + | grid on % moze se i odstraniti | ||
| + | </file> | ||
| + | |||
| + | Primetimo da smo, pored matrice, ucitali i njene dimenzije. To nije neophodno, jer se one funkcijom size((//size// vraca vektor ciji je prvi clan broj vrsta, a drugi broj kolona)) mogu saznati. | ||
| + | |||
| + | Svaku kolonu matrice **M** smo upisali u vektor **kolona** naredbom <code m>kolona=M(:,i)</code>, a prosecnu, najmanju i najvecu vrednost pronasli upotrebom funkcija //mean//,//min// i //max//. Trazeno odstupanje upisali smo u **vektor** nacinom prosirivanja. Naime, ako je **v** vektor, a **m** neki broj, taj broj se moze dodati datom vektoru sledecim prosirenjem:<code m>v = [v m]</code>.((Prosirenje matrice se moze vrsiti po kolonama ili vrstama. Prosirenje po vrstama matrice **M** vektorom **v** vrsi se kao <code m>M = [M; v]</code>, pri cemu broj kolona **M** i **v** mora biti isti. Analogno i za prosirenje po kolonama, <code m>M = [M v]</code>, pri cemu **M** i **v** moraju imati isti broj vrsta.)) | ||