Upload
zavad
View
171
Download
2
Embed Size (px)
DESCRIPTION
Uvod v Matlab Andreja Rojko. Spletna stran navodil http://www.ro.feri.uni-mb.si/predmeti/navodila/Matlab_nav/matlab_65_and.htm. Vsebina. Matlab, opis programa Delo s skalarji, vektorji in matrikami Uporaba pomoči (help) Grafika Osnovne programske strukture Orodje za regulacije. - PowerPoint PPT Presentation
Citation preview
Uvod v MatlabAndreja Rojko
Spletna stran navodilhttp://www.ro.feri.uni-mb.si/predmeti/navodila/Matlab_nav/
matlab_65_and.htm
Vsebina
• Matlab, opis programa
• Delo s skalarji, vektorji in matrikami
• Uporaba pomoči (help)
• Grafika
• Osnovne programske strukture
• Orodje za regulacije
Matlab, opis programa• Matlab:
- matematika in računanje,- razvoj algoritmov (tudi v C-ju),- zajemanje in obdelovanje podatkov,- modeliranje in simulacija, - vizualizacija (2D,3D grafi,..),- grafični uporabniški vmesniki,- močna podpora uporabniku.
Matlab, opis programa• Matlab:
- orodja (toolbox),
- vgrajene funkcije,
- Simulink.
• Uporabnik:
- lastni programi, funkcije, knjižnice,
- uporabniška orodja (internet).
Matlab, opis programa• Matlab - matrix laboratory
- osnovna enota za delo je polje (array)
- enostavno delo z vektorji in matrikami
Matlab, opis programa
Osnovno okno (View->
desktop layout->
Default)
DEMOUkaz DEMO!
Vpis skalarjevPrireditev vrednosti:
10
a = 10
b = -20; (Podpičje na koncu–ni ponovitve izpisa)
B = 1.07 (Decimalna vejica je decimalna pika!)
(Matlab razlikuje velike in majhne črke)
Števila z desetiško potenco vpišemo kot:
-> d = 5e-44105 d
Vpis skalarjevNajmanjše število s plavajočo vejico 2.2251e-308:realmin
Največje število s plavajočo vejico 1.7977e+308:realmax
Točnost operacij s plavajočo vejico:eps
Vgrajeno število: pi
Kompleksna številaKompleksna enota je i ali j:ijg = 5+7ih = 0.56e-12 +1.35j
Možne vse operacije kot z realnimi števili.Problem: i in/ali j prepišemo...-> rešitev clear i j
Osnovne operacije
Seštevanje, odštevanje, množenje, deljenje:
a+b
a-b
a*b
a/b
Potenciranje:
a^5.78
b^d
Osnovne operacije
Nekaj ‘nenavadnih’ operacij
0/10
100/0
Inf- neskončno
0/0
NaN- not a number
Osnovne operacije
Kvadratni koren:
sqrt(a)
Eksponentna funkcija:
exp(a)
Naravni logaritem:
log(a)
Desetiški logaritem:
log10(a)
Osnovne operacijeAbsolutna vrednost:
abs(b), abs(4+5i)
Trigonometrične funkcije, argumenti v radianih!
cos(0.2*pi), sin(a), tan(b)
Inverzne trigonometrične funkcije:
acos(-0.7), asin(1), atan(b)
Hiperbolične trigonometrične funkcije:
cosh(2), sinh(-2), tanh(0.56)
ZaokroževanjeZaokrožitev navzdol na celo število:
fix(1.9), fix(-1.9)
Zaokrožitev na najbližje celo število:
round(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 izpisaIzpis na 15 decimalk:
format long, 15/2.56
Izpis na 5 decimalk, osnovna nastavitev:
format, 15/2.56
Sami preizkusite ostale možnosti:
format short e, format long e, format +
Uporaba pomoči
Pomoč za znan ukaz:
help log
Iskanje ukaza:
lookfor logarithm
Iskanje pomoči v meniju help/ Matlab help.
Naloga
V delovnem oknu programa Matlab izračunajte:
)(7.35
108log 587.7*24.0cos2
ch
e
Naloga - rešitev
)(7.35
108log 587.7*24.0cos2
ch
e
>> sqrt(log2(exp(cos(0.24*7.87)))+8e5)/(35.7+cosh(pi))
ans =
18.9129
Vpis vektorjevVpis vrstičnega vektorja
x=[1,2,3,4]
Vpis stolpičnega vektorja
y=[10;20;30;40]
Avtomatsko generiranje vektorja
w=[0:0.1:1]
Transponiranje vektorja
transp_x = x’
Delo z vektorji
Vsota vseh členov vektorja
sum(x)
Dolžina vektorja
length(y)
Delo z vektorji
Seštevanje vektorjev
x+y'
Prištevanje, odštevanje, množenje, deljenje
vektorja s skalarjem
x+a
x*a
x/a
Vpis matrikeVpis vrstičnega vektorja
vrstica=[1,2,3]
Vpis stolpičnega vektorja
stolpec=[1;2;3]
KAKO BI VPISALI MATRIKO
9087
654
321
A
Vpis matrikeVpis matrike A
A=[1, 2, 3; 4, 5, 6; 7, 8, 90]
Dimenzije matrike
size(A)
Determinanta matrike
det(A)
Inverzna matrika
inv_A=inv(A)
Matematične operacije z matrikami
Množenje, deljenje, seštevanje, odštevanje matrik
inv_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 vektorjiMatrika 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)
Delo z členi, vrsticami in stolpci matrik in vektorjev
Branje prvega člena vektorja x
prvi_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 z členi, vrsticami in stolpci matrik in vektorjev
Sprememba drugega člena vektorja x v 1000
x(2)=1000
Dodajanje člena 1000 stolpičnemu vektorju y
y = [y; 1000]
Poskusite sami:- Prebrati prvi člen v tretji vrstici matrike A
Delo z členi, vrsticami in stolpci matrik in vektorjev
Branje prvega člena tretje vrstice A
A13 = A(1,3)
Branje drugega stolpca matrike
stolpec = A(:,2)
Branje tretje vrstice matrike
vrstica = A(3,:)
Delo z členi, vrsticami in stolpci matrik in vektorjev
Dodajanje vrstice matriki
A_nov=[A;[100,200,300]]
Dodajanje stolpca matriki
A_nov=[A,[0.1;0.2;0.3]]
Brisanje tretje vrstice iz matrike
A(3,:)=[]
Dodatni ukaziIzpiše seznam vseh spremenljivk v delovnem prostoruwhos
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.
2D grafiOdpre grafično okno
figure(1)
Izriše x,y graf
x = [-2*pi:0.01:2*pi];
y= sin(x);
plot(x, y)
Naslov grafa
title(‘sin(x)’)
2D grafiOznaka na x osi
xlabel(‘ t[s]’)
Oznaka na y osi
ylabel(‘ t[s]’)
Omejitev območja izpisa axis([xmin,xmax,ymin,ymax])
axis([-2*pi,2*pi,-1,1])
2D grafiRisanje mreže na graf
grid
Branje dveh točk iz grafa s klikom miške
ginput(2)
Zadrži vsebino grafičnega okna
hold on
2D grafiDoločanje barve in tipa izrisa
figure(2)
plot(x,y,’r’, x,y-1,’*y’, x,y+1,’-.g’)
Dodajanje teksta na graf
text(0, 0.5, ’Tocka x=0,Y=0.5’)
Poskusite v grafičnem oknu graf opremiti s teksti,
ter spreminjati izrise z uporabo ikon v
orodni vrstici okna in menijev Edit in Insert.
Posebni 2D grafiPolarni graf
theta=[0:0.01:2*pi];
r=sin(theta);
polar(theta,r)
Histogram
x=[1,-2,-2,3,3,3,4,4,4,4];
hist(x)
Ostali: stem, stairs, pie,..
3D grafi3D graf
figure(3)
plot3(x, cos(x), sin(x))
Posebni 3D grafiPosebni 3D graf
surf, mesh, waterfall, ...
http://www.ro.feri.uni-mb.si/predmeti/navodila/Matlab_nav/grafika/Posebni_3d_grafi.htm
Grafi, splošnoZbriše vsebino grafičnega okna
clf
Zapre vsa odprta grafična okna
close 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).
M datotekeNapišite m datoteko s katero se bo izvedlo nekaj
matematičnih operacij in izrisal 2D graf. Datoteko
shranite v Work direktorij. Izbrišite vsebino
delovnega okna z ukazoma
clear all, close allIme datoteke ne sme vsebovati presledkov in šumnikov!!!!
Izvedite vašo m datoteko tako, da v delovno okno
napišete njeno ime.
M datotekeNa začetek datoteke dodajte vrstice s
komentarjem, ki opisuje kaj datoteka izvaja
% Komentar
Datoteko ponovno shranite in v delovnem
prostoru napišite ukaz:
help ime_vase_datoteke
UPORABNI UKAZI PRI PROGRAMIRANJU
Ustavi izvajanje m-datoteke dokler uporabnik ne
pritisne poljubne tipke
pause
Izpiše obvestilo v delovni prostor
disp(‘Obvestilo’)
Prekine izvajanje for in while stavkov oziroma
izvajanje datoteke na mestu ukaza
break
POGOJNI STAVKI UKAZ IF
Oblika ukaza
if pogoj1
stavki1;
elseif pogoj2
stavki2;
else
stavki3;
end
POGOJNI STAVKI UKAZ IF
Primer:
a=1, b=2
if a<b
c=b-a
elseif ((a==b)|(c<=b))
c = a
else
c = a+b
end
Logični operatorji:
~ negacija
~= ni enako
= = ekvivalentno
<= manjše ali enako
< manjše
& logični in
| logični ali
POGOJNI STAVKI UKAZ WHILE
Oblika zanke while
while pogoj
stavki;
end
FOR ZANKAOblika zanke FOR
for stevec = zacetni:korak:koncni,
stavki;
end
CONTROL TOOLBOXPrenosno funkcijo:
Definiramo z:
st=[1,2]
im=[1,7,12]
prenosna_funkcija=tf(st,im)
43
22
s
s
im
stsF
127
22
ss
s
im
stsF
CONTROL TOOLBOXPrenosno funkcijo:
Definiramo tudi z ničlami in poli:
nicle=[-2]
poli=[-3,-4]
ojacenje=1
prenosna_funkcija=zpk(nicle,poli,ojacenje)
43
22
s
s
im
stsF
127
22
ss
s
im
stsF
CONTROL TOOLBOXLastnosti prenosne funkcije:
poli: poli_pr_funkcije=pole(prenosna_funkcija)
ničle: nicle_pr_funkcije=zero(prenosna_funkcija)
graf lege korenov: pzmap(prenosna_funkcija)
dušenje, lastna frek.: damp(prenosna_funkcija)
stacionarno ojačenje: dcgain(prenosna_funkcija)
43
22
s
s
im
stsF
CONTROL TOOLBOXFrekvenčna karakteristika in krivulja lege
korenov:
Frekvenčna karakteristika: bode(prenosna_funkcija)
Krivulja lege korenov: rlocus(prenosna_funkcija)
Uporabniški vmesnik za KLK: rltool(prenosna_funkcija)
43
22
s
s
im
stsF
CONTROL TOOLBOXČasovni odzivi
Stopnični odziv: step(prenosna_funkcija)
Impulzni odziv: impulse(prenosna_funkcija)
Odziv na poljuben signal: t=[0:0.01:50];
u=sin(t);
lsim(prenosna_funkcija,u,t)
43
22
s
s
im
stsF
CONTROL TOOLBOXPovezava sistemov
Zaporedna: serijski_sistem=series(sistem1, sistem2)
Vzporedna: vzp_sistem=parallel(sistem1, sistem2)
Zaprta zanka:
zaprtozančni_sistem=feedback
(sistem1, sistem2,predznak)
43
22
s
s
im
stsF
sFsF
sFsF
21
1
1
CONTROL TOOLBOXNaloga
Za sistem določite:
- ničle,
- pole,
- graf lege korenov,- stopnični odziv,- bodejev diagram.
492
2423
2
sss
s
im
stsF