Jan 07, 2016
Uvod v Matlab
Uvod v Matlab• Matlab - matrix laboratory
- osnovna enota za delo je polje (array) - enostavno delo z vektorji in matrikami
• Podpora:
Podjetje MathWorks:
http://www.mathworks.com
Uvod v MatlabUporaben za:
• matematika in računanje• razvoj algoritmov (tudi v C-ju)• zajemanje podatkov• modeliranje in simulacija• obdelava podatkov, vizualizacija (2D, 3D)• grafični uporabniški vmesniki• razvoj aplikacij z močno podporo uporabniku
Razvojno okolje
• Desktop/Desktop Layout/Default• Command Window• Workspace• Current Directory• Command History
M datoteke• File/New/M-file• Na začetek datoteke napišemo komentar, ki opisuje
kaj datoteka izvaja% Komentar
• Datoteko shranimo v delovnem prostoru pod končnico .m
• Opis datoteke:help ime_datoteke
Uporaba pomoči• Pomoč v obliki html strani
• Pomoč za znan ukaz help sindoc sin
• Iskanje ukazalookfor sin
Skalarji, vektorji, matrike
Zaokroževanje• Zaokrožitev navzdol na celo število
fix(1.9), fix(-1.9)
• Zaokrožitev na najbližje celo številoround(5.6)
• Zaokrožitev na najbližje celo število, proti floor(1.99), floor(-1.1)
• Zaokrožitev na najbližje celo število, proti ceil(1.99), ceil(-1.1)
Formati izpisa• Izpis na 15 decimalk
format long
• Izpis na 5 decimalk, osnovna nastavitevformat
• Ostali:format short e, format long e, format +,
format rat, format compact, ...
Vpis skalarjev• Prireditev vrednosti spremenljivki:
x = 10y = -20; Ne izpiše ponovno.X = 1.07; Decimalna števila se vpisujejo s piko!
Matlab razlikuje velike in majhne črke!
• Vpis števil z desetiško potenco vpišemo kot:d = 5e-4;
4105 d
Vpis skalarjev• Najmanjše predstavljivo pozitivno število:
realmin
• Največje predstavljivo pozitivno število:realmax
• Točnost operacij s plavajočo vejicoeps
• Vgrajeno število pi
Kompleksna števila• Kompleksna enota je i ali j:
ija = 5+7i;b = 1.123e-2 +1.123j;
• Računamo na enak način kot z realnimi števili• Real (a)• Imag(a)
Osnovne operacije• Seštevanje, odštevanje, množenje, deljenje:
a+ba-ba*ba/b
• Potenciranjea^5.78b^d
Osnovne operacije• Matematične funkcije (help elfun)
- Kvadratni koren sqrt(a)
- Eksponentna funkcija exp(a)
- Naravni logaritem log(a)
- Desetiški logaritem log10(a)
Osnovne operacije- Absolutna vrednost
abs(a), abs(1+2i)
- Trigonometrične funkcije, argumenti v radianih!sin(pi), cos(a), tan(b)
- Inverzne trigonometrične funkcijeacos(0.5), asin(-1), atan(a)
- Hiperbolične trigonometrične funkcijecosh(1), sinh(a), tanh(b)
Osnovne operacije• Nekaj ‘nenavadnih’ operacij
0/10100/0
• Inf- neskončno
0/0realmax*2
• NaN- not-a-number
Vpis vektorjev• Vpis vrstičnega vektorja
x=[1,2,3,4]
• Vpis stolpičnega vektorjay=[10;20;30;40]
• Avtomatsko generiranje vektorjaw=[0:0.1:1]
• Transponiranje vektorjatransp_x = x’
Delo z vektorji
• Vsota vseh členov vektorjasum(A)
• Dolžina vektorjalength(A)
• Dimenzija vektorja ali matrike size(A)
Delo z vektorji• Seštevanje vektorjev
x+y• Množenje vektorjev
x*y’, x.*y• Prištevanje, odštevanje, množenje, deljenje
vektorja s skalarjemx+a, x*a, x/a
Vpis matrike
9087
654
321
A
• Vpis vrstičnega vektorjavrstica=[1,2,3]
• Vpis stolpičnega vektorjastolpec=[1;2;3]
KAKO BI VPISALI MATRIKO
Vpis matrike• Vpis matrike A
A=[1, 2, 3; 4, 5, 6; 7, 8, 90]
• Dimenzije matrikesize(A)
• Determinanta matrikedet(A)
• Inverzna matrika inv_A=inv(A)
Matematične operacije z matrikami• Množenje, deljenje, seštevanje, odštevanje
matrikinv_A*A, A-inv_A, ...
• Množenje, deljenje, seštevanje, odštevanje skalarjev od/z matrikami
A*a, A-a, ...• Množenje matrike z vektorjem
u=A*[0.1,0.2,0.3]
Elementarne matrike in vektorji• Matrika ničel s 3 vrsticami in 4 stolpci
nicelna = zeros(3,4)• Matrika enic z 2 vrsticama in 3 stolpci
enice = ones(2,3)• Enotina matrika s 3 vrsticami in stolpci
enotina = eye(3)• Matrika naključnih števil med 0 in 1
naklj = rand(2,2), Kako bi izpisali naklj. matriko med 1 in 3?
Delo s členi, vrsticami in stolpci matrik in vektorjev
• Branje prvega člena vektorja xprvi_clen = x(1)
• Dodajanje člena 1 vrstičnem vektorju x = [x, 1]
Poskusite sami:- Spremeniti drugi člen vektorja x v 1000- Dodati člen 1000 stolpičnemu vektorju y
Delo s členi, vrsticami in stolpci matrik in vektorjev
• Sprememba drugega člena vektorja x v 1000x(2)=1000
• Dodajanje člena 1000 stolpičnemu vektorju yy = [y; 1000]
Poskusite sami:- Prebrati prvi člen v tretji vrstici matrike A
Delo s členi, vrsticami in stolpci matrik in vektorjev
• Branje prvega člena tretje vrstice AA13 = A(1,3)
• Branje drugega stolpca matrike stolpec = A(:,2)
• Branje tretje vrstice matrike vrstica = A(3,:)
Delo s členi, vrsticami in stolpci matrik in vektorjev
• Dodajanje vrstice matrikiA_nov=[A;[100,200,300]]
• Dodajanje stolpca matrikiA_nov=[A,[0.1;0.2;0.3]]
• Brisanje tretje vrstice iz matrikeA(3,:)=[]
Dodatni ukazi• Izpiše seznam vseh spremenljivk v delovnem prostoru
whos
• Zbriše vse spremenljivke iz delovnega prostoraclear all
• Zaustavi izvajanje programaCTRL+C
Povzetek• Z vejico ločimo člene v eni vrstici, s podpičjem preidemo v novo
vrstico.
• Pri delu z matrikami, oziroma členi matrik, se prvo število v oklepaju nanaša na vrstico, drugo na stolpec. A(i,j) tako pomeni i- to vrstico in j-ti člen v vrstici.
• Če delamo s celim stolpcem ali vrstico, nadomestimo številko člena z dvopičjem. A(i,:) pomeni i-to vrstico in je vrstični vektor, A(:,j) pomeni vse člene v j-tem stolpcu in je stolpični vektor.
• Pri dodajanju členov matriki je potrebno paziti na dimenzijo. Tako lahko matriki dodamo le stolpec, ki ima toliko členov kot ima matrika vrstic ali vrstico, ki ima toliko členov kot ima matrika stolpcev.
Vizualizacija
2D grafi• Odpre grafično okno
figure(1)
• Izriše x,y grafx = [-2*pi:0.01:2*pi];y= sin(x);plot(x, y)
• Naslov grafatitle(‘sin(x)’)
2D grafi• Oznaka na x osi
xlabel(‘ t[s]’)
• Oznaka na y osiylabel(‘ t[s]’)
• Omejitev območja izpisa axis([xmin,xmax,ymin,ymax])
axis([-2*pi,2*pi,-1,1])
2D grafi• Risanje mreže na graf
grid
• Branje dveh točk z grafa s klikom miškeginput(2)
• Zadrži vsebino grafičnega oknahold on
Podamo št. Točk, kliknemo na graf in Matlab poda rezultate.
Za konec damo hold off.
2D grafi• Določanje barve in tipa izrisa
figure(2)plot(x,y,’r’, x,y-1,’*y’, x,y+1,’-.g’)
• Dodajanje teksta na graftext(0, 0.5, ’Tocka x=0,Y=0.5’)
Posebni 2D grafiPolarni graftheta=[0:0.01:2*pi];r=sin(theta);polar(theta,r)
Histogramx=[1,-2,-2,3,3,3,4,4,4,4];hist(x)
Ostali: stem, stairs, pie,..
3D grafi• 3D graf
figure(3)plot3(x, cos(x), sin(x))
Posebni 3D grafi• Posebni 3D graf
surf, mesh, waterfall, ...
Pregled vseh 3D grafov na strani 46 v skripti.
Grafi, splošno• Zbriše vsebino grafičnega okna
clf
• Zapre vsa odprta grafična oknaclose all
• Grafe lahko kopiramo v druge (Microsoft) programe z opcijo Edit->Copy Figure. Pred tem označimo v Edit->Copy Options izbrano opcijo (bitmap, metafile).
Programske strukture
PROGRAMIRANJE- UPORABNI UKAZI
• Ustavi izvajanje m-datoteke dokler uporabnik ne pritisne poljubne tipke
pause
• Izpiše obvestilo v delovni prostordisp(‘Obvestilo’)
• Prekine izvajanje for in while stavkov oziroma izvajanje datoteke na mestu ukaza
break
POGOJNI STAVKI – UKAZ IFOblika ukaza if pogoj1 stavki1; elseif pogoj2 stavki2; else stavki3; end
POGOJNI STAVKI – UKAZ WHILEOblika zanke while
while pogoj stavki; end
FOR ZANKAOblika zanke FOR
for stevec = zacetni:korak:koncni, stavki;end
MATLAB FUNKCIJEDefinicija funkcije:
% Opis funkcije% Avtor, datum
function [izhod] = ime_funkcije(vhod)
izhod = vhod*2;
• NARGIN• NARGOUT
POMOČ
GLAVA
TELO
MATLAB FUNKCIJE• Global• Isglobal• Clear global