Matlabin perusteet Matlabin (MATrix LABoratory) perusfilosofia on, että se käsittelee kaikkia muuttujia matriiseina, joiden erikoistapauksia ovat vektorit ja skalaariluvut. Näin ollen se soveltuu erityisesti numeeriseen laskentaan. Lisää materiaalia löydät mm. kurssien AS-7.1106 Johdatus Matlab-ohjelmiston käyttöön 1 ja AS-7.1107 Johdatus Matlab-ohjelmiston käyttöön 2 materiaaleista sekä Matlabin sivuilta http://www.mathworks.com/help/. 1. Käyttöliittymä:
2. Peruskäsitteitä: >> % Kommentti alkaa %-merkistä >> % Muuttujan määrittely (case sensitive): >> a = 1; A = a A = 1 >> % Puolipiste piilottaa laskun vastauksen käyttäjältä ja >> % mahdollistaa useamman laskutoimituksen samalla rivillä. >> % Kätevä etenkin suurissa matriisien käsittelyssä. >> % Tietoa funktiosta saa komennolla help. >> help sin SIN Sine of argument in radians. SIN(X) is the sine of the elements of X. >> % Jos laskun tulosta ei talleta mihinkään muuttujaan, >> % se tallentuu muuttujaan nimeltä ans. >> sin(pi / ) 0.7071 >> % Huom. pi on Matlabin vakio piille (π). >> % Muuttujat voi vapauttaa komennolla clear <muuttujan nimi>. >> % Jos funktiolla on useampi paluuarvo tai parametri, niitä käytetään näin: >> [a, b] = f(x, y, z) Perusfunktioita: Trigonometria (rad): sin(x), cos(x), tan(x) Trigonometria (deg): sind(x), cosd(x), tand(x) Arkusfunktiot (rad): asin(x), acos(x), atan(x), atan2(y, x) Arkusfunktiot (deg): asind(x), acosd(x), atand(x) Eksponenttifunktio: exp() Luonnollinen logaritmi: log() 10-kantainen logaritmi: log10() Itseisarvo: abs() 3. Matriisit ja vektorit: >> % Matriisi voidaan määritellä seuraavasti: >> A = [1 2; 3 ]; B = A B = 1 2 3 >> % Huomaa ero seuraavien laskutoimitusten välillä: >> A * B 7 10 15 22 >> A.* B 1 9 16
>> % * = Matriisikertolasku (huom. dimensiot) >> %.* = Alkioittainen kertolasku (pistetulo) >> % Myös jakolaskusta (/) ja potenssista (^) on olemassa >> % sekä matriisi- että alkioittaisversiot (./ ja.^) >> % Matriisin tiettyyn alkioon voi viitata komennolla M(R, C) >> A(1, 2) 2 >> % Huomaa, että indeksointi alkaa ykkösestä >> % Lineaarinen rivi-/vaakavektori voidaan määritellä kahdella eri tavalla: >> % min:step:max operaattorilla... >> lin1 = 1:1:5 lin1 = 1 2 3 5 >> %..tai linspace(min, max, count) -komennolla >> lin2 = linspace(1,5,5) lin2 = 1 2 3 5 >> % Logaritminen rivi-/vaakavektori voidaan määritellä >> % logspace(emin, Emax, count) -komennolla, jossa E on kymmenpotenssi >> log = logspace(0,, 5) log = 1 10 100 1000 10000 Matriisioperaatioita: size(x) Matriisin koko. Palauttaa X:n rivien ja sarakkeiden määrän length(x) Selvittää vektorin pituuden. Vastaa komentoa max(size(x)). transpose(x) tai X. Transpoosi X Hermitointi (X kompleksinen) inv(x) Käänteismatriisi det(x) Determinantti X\y Gaussin eliminaatio / PNS-ratkaisu eye(r, C) R x C identiteettimatriisi/-yksikkömatriisi ones(r, C) R x C ykkösmatriisi (täynnä 1) zeros(r, C) R x C nollamatriisi (täynnä 0)
. Kompleksiluvut: >> % Kompleksiluku voidaan määritellä karteesisessa muodossa seuraavasti: >> a = 1 + i * 2 a = 1.0000 + 2.0000i >> %... ja polaarimuodossa seuraavasti (huom. radiaanit): >> b = * exp(i * pi / ) b = 2.828 + 2.828i >> % Huom. i on Matlab-vakio imaginaariyksikölle. Operaatioita kompleksiluvuille: real(c) Reaaliosa imag(c) Imaginaariosa abs(c) Itseisarvo angle(c) Vaihekulma conj(c) tai c Konjugaatti ( vastaa kompleksisen matriisin hermitointia) 5. Piirtäminen: Matlabissa piirtäminen tapahtuu aina kahden vektorin välillä. Ensimmäinen vektoreista sisältää ne diskreetit vaaka-akselin pisteet, joissa piirrerräväksi haluttu funktion arvot lasketaan. Toinen vektoreista sitten sisältää juurikin nuo lasketut funktion arvot ensimmäisen vektorin määräämissä pisteissä. Piirtokäskyt: plot(x, y) semilogx(x, y) semilogy(x, y) loglog(x, y) polar(t, r) Lineaariset x- ja y-akselit Logaritminen x-akseli Logaritminen y-akseli Logaritmiset x- ja y-akselit Napakoordinaattiesitys Huom. Voit piirtää useamman käyrän samaan kuvaajaan samalla komennolla. Voit myös vaikuttaa käyrän ulkoasuun käyttämällä ulkoasumäärittelyjä. Ks. help Apukäskyt: grid axis hold xlim, ylim title() xlabel() ylabel() legend() subplot() spline() Ruudukko (mm. grid on, grid off) Akselit (mm. axis equal) Mahdollistaa useamman käyrän piirtämisen samaan kuvaan (mm. hold on, hold off) Akselien rajat Otsikko X-akselin tunniste Y-akselin tunniste Käyrien selite Monta pienempää kuvaajaa samaan kuvaan Interpolointi Huom. Voit lisätä kreikkalaisia kirjaimia merkkijonoihin ( ) kirjoittamalla \symboli. Esim. Kulmataajuus \omega.
6. Symbolinen laskenta (Laplace-muunnos): Symbolic Math Toolbox >> syms t; % Symbolinen muuttuja t >> F = * exp(-t); % Aikatason funktio (t symbolinen -> F symbolinen) >> pretty(f) % Kauniimpi ulkonäkö ------ exp(t) >> L = laplace(f); pretty(l) % Laplace-muunnetaan: ----- s + 1 >> F = ilaplace(l); pretty(f) % Ja edelleen käänteismuunnetaan: ------ exp(t) Huom. Siirtofunktioita laskettaessa käänteismuunnoksessa voi esiintyä kompleksisia termejä, joista pääsee eroon täydentämällä Laplace-tason esityksen neliöiksi. 7. Siirtofunktioiden käsittely: Control System Toolbox >> % Siirtofunktio-objekti voidaan luoda käyttäen tf()-komentoa: >> bw = tf(1, [1 2 2 1]) Transfer function: 1 --------------------- s^3 + 2 s^2 + 2 s + 1 >> % Askelvaste voidaan laskea kätevästi komennolla step() >> % Ilman määrittelyä [y, t] = step() piirtää askelvasteen kuvaajan >> [y, t] = step(bw); >> % Impulssivaste voidaan laskea vastaavasti komennolla impulse() >> % Vaste mielivaltaiselle herätteelle voidaan laskea lsim()-komennon avulla >> % Ilman määrittelyä y = lsim() piirtää kuvaajan, jossa on sekä >> % heräte että vaste >> t = 0:0.1:10; % Aikavektori >> u = sin(t); % Heräte >> y = lsim(bw, u, t); % Vaste Funktioita siirtofunktioiden käsittelyyn: pole() Siirtofunktion navat zero() Siirtofunktion nollat pzmap() Napanollakuvio zpk() Muodosta siirtofunktio nollista, navoista ja vahvistuksesta dcgain() Staattinen vahvistus (askelvasteen loppuarvo) bode() nichols() nyquist() rootlocus() margin() Boden diagrammi (vahvistus ja vaihe kulmataajuuden funktiona) Nicholssin diagrammi (vahvistus vaihesiirron funktiona) Nyquistin diagrammi (Re- ja Im-osien käyttäytyminen) Juuriura Vahvistus- ja vaihevarat Huom. Siirtofunktioista ja simuloinnista lisää kursseilla AS-7.2111 Analoginen säätö ja S-87.2020 Elektroniikka II.