Матлаб – дводимензионални графикони

Поставите коментар

Komanda plot

Najjednostavniji oblik komande je: plot(x,y).

Argumenti x i y su vektori. Oba vektora moraju imati jednak broj elemenata. Izvršavanjem ove komande nastaje slika u grafičkom prozoru. Ako nije otvoren, grafički prozor se automatski otvara nakon izvršenja komande. Slika sadrži jednu krivu sa x vrednostima na apscisi i y vrednostima na ordinati. Kriva se sastoji od pravolinijskih segmenata koji povezuju tačke čije su koordinate definisane elementima vektora x i y.

>> %Primer izrade grafikona

>> x=[1 2 3 5 7 7.5 8 10];

>> y=[2 6.5 7 7 5.5 4 6 8];

>> plot(x,y)

image

Komanda plot ima opcione argumente za zadavanje boje i stila linije, boje i vrste markera. Sa tim opcijama, komanda izgleda ovako:

plot(x,y,’oznaka linije’,’ImeSvojstva’,’VrednostSvojstva’)

Oznake linija:

– puna linija (podrazumevana)

— isprekidana

: tačkasta

-. crta-tačka

Oznake boje linija:


r crvena

g zelena

b plava

c cijan

m magenta

y žuta

k crna

w bela

Oznake markera

+ znak plus

¡ kružić

* zvezdica

. tačka

s kvadrat

d romb

p petokraka zvezda

Oznake linija treba pisati kao znakovni niz unutar komande plot. Redosled oznaka je proizvoljan. Oznake linija su opcione.

>> plot(x,y,’r’) tačke povezuje puna crvena linija

>> plot(x,y,’–y’) tačke povezuje žuta isprekidana linija

>> plot(x,y,’*’) tačke su ozbačene zvezdicama, a nisu povezane linijama

>> plot(x,y,’g:d’) zelena tačkasta linija povezuje tačke označene markerima u obliku romba

Ime svojstva i vrednost svojstva

Ime svojstva se piše kao znakovni niz iza kojeg sledi zarez i vrednost svojstva, sve unutar komande plot.

Ime svojstva

Opis

Moguće vrednosti svojstva

LineWidth(linewidth)

Deljina linije

Broj izražen u tačkama (default 0.5)

MarkerSize(markersize)

Veličina markera

Broj izražen u tačkama

MarkerEdgeColor(markeredgecolor)

Boja markera ili boja ivice za popunjene markere

Oznake boja iz prethodnih opisa, napisane kao znakovni niz

MarkerFaceColor(markerfacecolor)

Boja popune za popunjene markere

Oznake boja iz prethodnog opisa, napisane kao znakovni niz

Imena svojstava za oznake linija su:

Oznaka

Ime svojstva

Moguće vrednosti svojstva

Line Style

Linestyle

Oznaka stila linije iz navedene tabele, napisana kao znakovni niz

Line Color

Color

Oznaka boje linjie iz navedene tabele, napisana kao znakovni niz

Marker

Marker

Oznaka oblika markera iz navedene tabele, napisana kao znakovni niz

Primer1:

godina

1988

1989

1990

1991

1992

1993

1994

Prodaja u milionima

8

12

20

22

18

24

27

Napraviti grafikon koji predstavlja podatke iz nekog preduzeća o prodaji za godine od 1988 – 1994.

Rešenje:

>> god=[1988:1994]

god =

1988 1989 1990 1991 1992 1993 1994

>> prod=[8,12,20,22,18,24,27]

prod =

8 12 20 22 18 24 27

>> plot(god,prod,’–r*’)

Dodati komande za izmenu boje i debljine linije i markera

Npr:

plot(god,prod,’rd-.’,’linewidth’,4,’markersize’,12,’markeredgecolor’,’g’,’markerfacecolor’,’y’)

GRAFIKON FUNKCIJE

Komanda plot može biti napisana u komandnom prozoru ili u skript datoteci. Grafikoni se mogu crtati za date podatke ili za funkcije. Prvi grafikon je nacrtan za date podatke. Evo primera grafikona funkcije pomoću skript datoteke:

Primer2:

Nacrtati grafik funkcije y = 3.5-0.5x cos(6x) u intervalu -2<=x<=4 sa korakom 0.01

%Grafik funkcije

x=[-2:0.01:4];

y=3.5.^(-0.5*x).*cos(6*x);

plot(x,y)

Iz komandnog prozora izvršavamo datoteku navođenjem njenog imena i dobijamo grafik funkcije:

image

Izgled grafika zavisi od broja tačaka na koordinati x, odnosno od razmaka između elemenata vektora x. Za funkcije koje se brže menjaju potreban je manji razmak.

Isti primer, sa razmakom 0.3 (između elemenata vektora x) će dati sledeći grafik

image

Komanda fplot

Ova komanda iscrtava funkcije oblika y=f(x) u datim granicama x i y ose (opciono):

fplot(’funkcija’,granice,oznake linije)

Funkciju možete upisati neposredno u komandu kao znakovni niz. Na primer za funkciju f(x)=8x2+5cos(x) treba upisati ’8*x^2+5*cos(x)’. Funkcija ne sme da sadrži prethodno definisane prpomenljive.

Granice su vektor [xmin,xmax] od dva elementa koji zadaju domen x ili vektor s 4 elementa [xmin,xmax,ymin,ymax] koji zadaju domen x i domen y.

Oznake linije su iste kao i u komandi plot.

Primer:

fplot(‘x^2+4*sin(2*x)-1’,[-3,3])

image

Grafikon sa više grafika

Komanda plot

Nacrtaće onoliko grafika koliko parova vektora upišete u komandu. Komanda plot(x,y,u,v,t,h) nacrtaće tri grafika: y u zavisnosti od x, v u zavisnosti od u i h u zavisnosti od t, sve na istom grafikonu. Automatski se crtaju grafici različitih boja. Posle svakog para vektora možete dodati oznaku linije tog grafika: plot(x,y,’-b’,u,v,’—r’,t,h,’g:’).

PRIMER1:

>> x=-2:0.01:4;

>> y=3*x.^3-26*x+6;

>> yd=9*x.^2-26;

>> ydd=18*x;

>> plot(x,y,’-b’,x,yd,’–r’,x,ydd,’:k’)

image

Komande hold on i hold off

Da bi se nacrtali grafici pomoću ovih komandi potrebno je prvo nacrtati jedan grafik komandom plot. Zatim se upiše komanda hold on. Time se ostavlja otvoren prozor s prvim grafikom, zajedno sa svojstvima osa i formatiranjem, ako ih je bilo. Sledeće upisane komande plot nacrtaće nove grafike na istoj slici. Postupak dodavanja grafika se prekida komandom hold off.

PRIMER2: (prethodni primer)

>> x=-2:0.01:4;

>> y=3*x.^3-26*x+6;

>> yd=9*x.^2-26;

>> ydd=18*x;

>> plot(x,y,’-b’)

>> hold on

>> plot(x,yd,’–r’)

>> plot(x,ydd,’:k’)

>> hold off

Komanda line

Ovom komandom dodajemo grafike na postojeći grafikon. Oblik komande:

line(x,y,’ImeSvojstva’,VrednostSvojstva)

Na primer:

line(x,y,’linestyle’,’- -’,’color’,’r’,’marker’,’o’)

postojećem grafikonu dodaje isprekidanu crvenu liniju sa kružnim markerima. Glavna razlika između komandi line i plot je u tome što plot otpočinje novi grafikon svaki put kada se pokrene, dok line dodaje linije postojećem grafikonu. Najpre se komandom plot nacrta prvi grafik, a zatim komandom line dodaju novi.

PRIMER 3: (prethodni primer)

>> x=-2:0.01:4;

>> y=3*x.^3-26*x+6;

>> yd=9*x.^2-26;

>> ydd=18*x;

>> plot(x,y,’-b’)

>> line(x,yd,’–r’

>> line(x,yd,’linestyle’,’–‘,’color’,’r’)

>> line(x,ydd,’linestyle’,’:’,’color’,’k’)

Formatiranje grafikona

Grafikoni se mogu formatirati komandama koje slede komandama plot i fplot, ili pomoću editora grafikona u grafičkom prozoru. Prvi način je pogodan kad je komanda uključena u skript datoteku. Formatiranje u edotiru važi samo za taj grafikon i mora se ponavljati svaki put kad se nacrta grafikon. Mogu se koristiti komande menija edit ili insert, desni klik na objekat koji se menja, tj. formatira ili alatke iz tulbara.

Komande xlabel i ylabel

Služe za stavljanje natpisa na ose:

xlabel(’tekst kao znakovni niz’); ylabel(’tekst kao znakovni niz’)

Komanda title dodaje naslov: title(’tekst kao znakovni niz’).

Komande text i gtext smeštaju natpis na grafikon: text(x,y,’tekst kao znakovni niz’); gtext(’tekst kao znakovni niz’). Komanda text smešta tekst na grafik i to tako da njegov prvi znak bude na mestu čije su koordinate x i y. Gtext smešta tekst na mesto koje korisnik naknadno sam odredi, jer se otvara grafički prozor u kome može da se zada mesto natpisa.

Komanda legend postavlja legendu na grafikon. Legenda prikazuje uzorak linije kojom je iscrtan svaki grafik i pored njega natpis koji zadaje korisnik. Oblik komande je: legend(’znakovni niz1’,’zbakovniniz2’,…,pol). Znakovni niz je natpis koji se postavlja pored uzorka linije. Redosled natpisa odgovara redosledu izrade grafika. pol je opcioni broj kojim se zadaje položaj legende na slici.

Tekst u komandama se može formatirati promenom fonta, veličine, položaja, stila, boje znakova, boje pozadina itd. Tekst se formatira dodavanjem modofokatora u znakovne nizove ili opcionih argumenata ImeSvojstva i VrednostSvojstva iza znakovnog niza.

Komanda axis menja opseg i izgled osa.

Komanda grid on dodaje linije mreže na grafikon, komanda grid off ih uklanja.

Primer:

x=[10:0.1:22];y=[95000./x.^2;

xd=[10:2:22];yd=[950 640 460 340 250 180 140];

plot(x,y,’-‘,’LineWidth’,1.0)

xlabel(‘RASTOJANJE (cm)’)

ylabel(‘JACINA lx’)

title(‘\fontname{Arial}Jacina svetlosti kao funkcija rastojanja’,’FontSize’,14)

axis([8 24 0 1200])

hold on

plot(xd,yd,’ro–‘,’linewidth’,1.0,’markersize’,10)

legend(‘Teorija’,’Eksperiment’,0)

hold off

image

Komanda title(’tekst’) ubacuje naslov na grafikon.

Komanda legend(’tekst1’,’tekst2’, …’tekstn’) ubacuje legendu na grafikon gde su tekst1, tekst2, …tekstn natpisi koji se postavljaju pored uzorka linije.

Komanda figure omogućava otvaranje više grafičkih prozora. Npr.

>> fplot(‘x*cos(x)’,[0,10])

>> figure

>> fplot(‘exp(-0.2*x)*cos(x)’,[0,10])

Prikazaće se dva grafička prozora:

image image

SPECIJALNI GRAFIKONI

Kružni dijagram: pie(x)

image

Horizontalni trakasti grafikoni: barh(x,y)

image

Vertikalni trakasti grafikoni: bar(x,y)  

image

Grafikoni diskretnih podataka: stem(x,y)

image

Stepenasti grafikoni: stairs(x,y)

image

Употреба скрипт датотека

Поставите коментар

Скрипт датотека је низ Matlab-ових команди снимљених као засебан програм. Њене команде се извршавају редоследом којим су наведене, као да су уписане у командни прозор. Уколико скрипт датотека има команду за излаз, излаз се приказује у командном прозору. Могу се преуређивати неограничен број пута. Могу се писати у било ком едитору и затим готове пренети у Matlab-ов прозор Editor. При снимању добијају наставак .m

Прављење, снимање и извршавање скрипт датотека

Прозор за писање скрипт датотека отвара се из менија File>>New>>M-file.

clip_image002[4]

Команде се пишу ред по ред, притиском на Enter. Matlab аутоматски додељује број реда. Датотека мора бити запамћена да би се могла покренути. То се ради из менија File>>Save As, после чега се бира директоријум у коме ће се снимити датотека.

Датотека се извршава уписивањем њеног имена у командни прозор и притиском на Enter, или притиском на иконицу Run у Едитору. Да би Матлаб могао да покрене скрипт датотеку, претходно је мора пронаћи, што значи да датотека мора бити у текућем директоријуму или на путањи за претраживање. Путања текућег директоријума приказује се у падајућиј листи Cуrrent Directory у командном прозору. Други начин мењања текућег директоријума пружа команда cd у командном прозору.

Ако покренемо скрипт датотеку која није у текућем директоријуму добићемо следећи прозор

image

у којем нас matlab обавештава да скрипта коју смо покренули није у текућем директоријуму. Можемо променути путању избором Change Directory, или додати датотеку у текући директоријум избором Add to Path.

Променљиве дефинисане у командном прозору препознају се и у скрипт датотеци и обрнуто. Такве променљиве се називају глобалне.

Уношење података у скрипт датотеку

Постоје три начина за додељивање вредности променљивој:

  1. Променљива је дефинисана и додељена јој је вредност у скрипт датотеци

clip_image004

Из командног прозора се датотека покреће навођењем њеног имена, уз промену текућег директоријума:

>> primer1

prosek_bodova =

78.6667

>>

  1. Променљива је дефинисана и додељена јој је вредност у командном прозору:

У овом случају, треба прво исправити скрипт датотеку Пример1 и избрисати редове у којима се дају вредности променљивама, тј. оставити само ред за израчунавање просечне вредности:

%primer unosenja podataka%

prosek_bodova=(ucenik1+ucenik2+ucenik3)/3

У командном прозору ћемо задати вредности променљивама и покренути извршавање датотеке:

>> ucenik1=87;

>> ucenik2=70;

>> ucenik3=50;

>> primer2

prosek_bodova =

69

>>

  1. Променљива је дефинисана у скрипт датотеци, али је задата вреднодт унета у командни прозор тек након покретања датотеке

Након покретања датотеке од корисника се захтева да променљивој додели вредност у командном прозору. То се ради командом input:

ime_promenljive=input(’znakovni niz poruke koja će biti prikazana u komandnom prozoru’)

Када се скрипт датотека покрене и команда input изврши, знаковни низ се приказује у командном прозору. То је порука кориснику да упише вредност и притисне Enter. Тиме ће променљивој бити додељена уписана вредност. На крају inpуt команде треба ставити тачку и зарез уколико не желимо да се вреност променљиве опет прикаже у командном прозору:

%primer unosenja podataka%

ucenik1=input(‘Unesite bodove prvog ucenika’);

ucenik2=input(‘Unesite bodove drugog ucenika’);

ucenik3=input(‘Unesite bodove treceg ucenika’);

prosek_bodova=(ucenik1+ucenik2+ucenik3)/3

Ево како изгледа командни прозор за ту скрипт датотеку:

>> primer3

Unesite bodove prvog ucenika77

Unesite bodove drugog ucenika83

Unesite bodove treceg ucenika59

prosek_bodova =

73

>>

Излазне команде

Matlab има неколико команди за генерисање приказа који могу садржати текстуалне поруке, нумеричке податке и графиконе. За генерисање приказа користе се команде disp, i fprintf. Команда disp приказује резултат на екрану, док се команда fprintf користи за приказивање резултата на екрану или за уписивање у датотеку. Обе команде се могу употребљавати и у командном прозору и у скрипт датотеци. Када се употребе у скрипт датотеци команде дају приказ резултата у командном прозору.

Команда disp

Користи се за приказивање елемената променљиве без приказивања њеног имена, и за приказивање текста. Формат ове команде гласи:

disp(ime promenljive) ili disp(’tekst kao znakovni niz’)

Сваки резултат команде disp се приказује у новом реду:

>> abc=[5 9 1;7 2 4];

>> disp(abc)

5 9 1

7 2 4

>> disp(‘Zadatak nema resenje’)

Zadatak nema resenje

Употребићемо команду disp у примеру за израчунавање просечног броја бодова:

%primer unosenja podataka%

ucenik1=input(‘Unesite bodove prvog ucenika’);

ucenik2=input(‘Unesite bodove drugog ucenika’);

ucenik3=input(‘Unesite bodove treceg ucenika’);

prosek_bodova=(ucenik1+ucenik2+ucenik3)/3;

disp(“)

disp(‘Prosecan broj bodova je:’)

disp(“)

disp(prosek_bodova)

У командном прозору извршавање ове датотеке изгледа на следећи начин:

>> primer4

Unesite bodove prvog ucenika72

Unesite bodove drugog ucenika66

Unesite bodove treceg ucenika88

Prosecan broj bodova je:

75.3333

Свака команда disp приказује вредност само једне промељиве. Често треба приказати бројеве у табеларном облику. У том случају прво дефинишемо променљиву која је матрица с бројевима, па њу прикажемо помоћу команде disp. Истом командом можемо приказати и заглавље табеле, али пошто она не омогућава подешавање формата приказа табеле, положај заглавља према колонама подешава се додавањем размака.

god=[1984 1986 1988 1990 1992 1994 1996];

stan=[127 130 136 145 158 178 211];

tabela(:,1)=god’;

tabela(:,2)=stan’;

disp(‘  GODINA STANOVNIKA’)

disp(‘               U MILIONIMA’)

disp(‘ ‘)

disp(tabela)

Покретањем ове датотеке добија се следећи приказ у командном прозору:

>> komanda_disp

      GODINA STANOVNIKA

                    U MILIONIMA

     1984                    127

     1986                    130

     1988                    136

     1990                    145

     1992                    158

     1994                    178

     1996                    211

Команда fprintf

Помоћу ове команде можете приказати резултат на екрану или га уписати у одређену датотеку. Текст и нумеричке вредности могу бити приказани у истом реду, а може се задати и формат бројева.

Употреба команде за приказивање текста

fprintf(’tekst upisan kao znakovni niz’)

Команда омогућава и прелазак у нови ред на произвољном месту знаковног низа. То се ради уметањем секвенце \n пре знака којим треба да почне приказ у новом реду. Ово се зове излазна секвенца. Постоје и следеће секвенце: \b-као да је притиснут тастер Backspace и \t-као да је притиснут Tab. Да би излаз команде fprintf почео у новом реду, упишите \n на почетак знаковног низа.

Приказивање измешаног текста и нумеричких података

fprintf(’tekst kao znakovni niz %-5.2f dodatni tekst’,ime_promenljive)

%означава место где се број треба уметнути у текст. -5.2f означавају:-знак броја, 5.2 ширину поља и прецизност тј најмањи број цифара и децимална места, и f знак конверзије, односно начин приказа броја.

Уобичајени су следећи начини приказивања:

e Експоненцијална нотација са малим e

E Експоненцијална нотација са великим Е

f Нотација са фиксном децималном тачком

g Краћа од нотација е или f

G Краћа од нотација Е или f

i Цео број

Искористићемо пример са просечним бројем бодова:

%primer koriscenja komande fprintf%

ucenik(1)=input(‘Unesite bodove prvog ucenika’);

ucenik(2)=input(‘Unesite bodove drugog ucenika’);

ucenik(3)=input(‘Unesite bodove treceg ucenika’);

prosek_bodova=mean(ucenik);

fprintf(‘Prosecan broj bodova ucenika je %f’,prosek_bodova)

Приметите да су бодови ученика унешени у вектор и да је просечан број бодова израчунат помоћу функције mean која одређује средњу вредност вектора. Као резултат извршавања ове скрипт датотеке добијамо:

>> primer5

Unesite bodove prvog ucenika94

Unesite bodove drugog ucenika86

Unesite bodove treceg ucenika73

Prosecan broj bodova ucenika je 84.333333

У једну команду може се уметнути већи број променљивих које се редом наводе на крају команде, иза текста и зареза. Команда fprintf је векторизована, тј она се аутоматски понавља док не прикаже све елементе променљиве.

PRIMER1:

%izracunati povrsinu i obim pravougaonika%

a=input(‘unesite a= ‘);

b=input(‘unesite b= ‘);

fprintf(‘povrsina pravougaonika %ix%i je %i, a obim je %i cm’,a,b,a*b,2*(a+b))

kada se pokrene ova skript datoteka dobije se

unesite a= 5

unesite b= 6

povrsina pravougaonika 5×6 je 30, a obim je 22 cm>>

PRIMER2:

%generisati matricu T dimenzija 2×5, у kojoj prvu vrstu zauzimaju brojevi

%od 1 do 5, a drugu odgovarajuci kvadratni koreni i prikazati tabelarno%

clc

x=1:5;

T=[x;sqrt(x)];

fprintf(‘za broj %i kvadratni koren iznosi %5.2f\n’,T)

kada se pokrene ova skript datoteka dobije se

za broj 1 kvadratni koren iznosi 1.00

za broj 2 kvadratni koren iznosi 1.41

za broj 3 kvadratni koren iznosi 1.73

za broj 4 kvadratni koren iznosi 2.00

za broj 5 kvadratni koren iznosi 2.24

PRIMER3:

%za cele brojeve od n do m prikazati tabelarno njihove kvadrate i kvadratne

%korene%

n=input(‘unesi pocetni broj: ‘);

m=input(‘unesi krajnji broj: ‘);

a=n:m;

b=[a;a.^2;sqrt(a)];

fprintf(‘broj kvadrat koren\n’)

fprintf(‘%4i%9i%7.2f\n’,b)

kada se pokrene ova skript datoteka dobije se

unesi pocetni broj: 5

unasi krajnji broj: 10

broj kvadrat koren

5          25      2.24

6          36      2.45

7          49      2.65

8          64      2.83

9          81      3.00

10       100      3.16

– Употреба команде fprintf за писање резултата у датотеку

Писање резултата захтева три корака:

a) отварање датотеке командом fopen

b) писање резултата у отворену датотеку командом fprintf

c) затварање датотеке командом fclose

Команда за отварање датотеке има следећи облик:

fid=fopen(’ime_promenljive’,’dozvola’)

fid је променљива звана индикатор датотеке. Када се изврши команда fopen, променљивој fid се додељује скаларна вредност. Име променљиве пише се као знаковни низ унутар полунаводника. Дозвола је шифра која одређује начин отварања датотеке:

’r’ отвара датотеку за читање

’w’ отвара датотеку за писање; уколико датотека постоји, њен садржај се брише, уколико не постоји, прави се нова датотека

’a’ исто као w, само што се постојећи садржај не брише, нови се додаје на крај постојећег.

Ако команда не садржи шифру дозволе, датотека се отвара са подразумеваном шифром ’r’.

Када је датотека отворена, резултати се могу уписати у њу командом fprintf. Она се употребљава на начин као што смо већ објаснили, само што се на прво место команде уметне променљива fid. Нпр: fprintf(fid,’tekst %i tekst’,ImePromenljive);

Када се упишу подаци у датотеку, она се затвара командом

fclose(fid)

Командом fprintf се могу уписати подаци у више датотека. Најпре се отворе датотеке са различитим fid-овима, а затим се упише податак у жељену датотеку.

Датотека мора бити снимљена у текућем директоријуму. Не мора се унапред правити, направиће је сам програм при извршавању.

ПРИМЕР3: додати у скрипт датотеку команде за испис резултата и у текстуалну датотеку

%za cele brojeve od n do m prikazati tabelarno njihove kvadrate i kvadratne

%korene%

n=input(‘unesi pocetni broj: ‘);

m=input(‘unasi krajnji broj: ‘);

a=n:m;

b=[a;a.^2;sqrt(a)];

fid=fopen(‘tabela.txt’,’w’);

fprintf(fid,’broj kvadrat koren\n’);

fprintf(fid,’%4i%11i%10.2f\n’,b);

fprintf(‘broj kvadrat koren\n’);

fprintf(‘%4i%10i%10.2f\n’,b);

fclose(fid);

clip_image003 clip_image004[4]

фајл отворен у едитору matlaba фајл отворен у Word-у