iss0010 susteemiteooria. prx · matlab: skriptid topelt protsendimärk (“%%”) eraldab...

22
ISS0010 Süsteemiteooria Sissejuhatus MATLAB-i keskkonda Automaatikainstituut 2016

Upload: others

Post on 07-Aug-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ISS0010 Susteemiteooria. Prx · MATLAB: Skriptid Topelt protsendimärk (“%%”) eraldab skriptisektsioone. Jooksuta neid eraldi vajutades CTRL+Enter↵. Alati on mugavam kirjeldada

ISS0010 SüsteemiteooriaSissejuhatus MATLAB-i keskkonda

Automaatikainstituut 2016

Page 2: ISS0010 Susteemiteooria. Prx · MATLAB: Skriptid Topelt protsendimärk (“%%”) eraldab skriptisektsioone. Jooksuta neid eraldi vajutades CTRL+Enter↵. Alati on mugavam kirjeldada

Süsteemide modelleerimine: Kasutatav tarkvara

• MATLAB ja Simulink;• Octave: MATLAB keele otsene toetus,

vabavara;

• Scilab ja Xcos: MATLAB keele osaline toetus, vabavara;

• Python koos NumPy jm. paketidega: võimas, vabavara, kuid ei ole mingit MATLAB keele tuge.

2

Page 3: ISS0010 Susteemiteooria. Prx · MATLAB: Skriptid Topelt protsendimärk (“%%”) eraldab skriptisektsioone. Jooksuta neid eraldi vajutades CTRL+Enter↵. Alati on mugavam kirjeldada

MATLAB: Graafiline kasutajaliides

Praegune MATLAB-i töökaust opsüsteemis. MATLAB-i käsurida. Käsk täidetakse kohe

peale Enter↵ nupu vajutamist.Käsu tulemus salvestatakse MATLAB-i jooksvate andmete hulka. Noole klahvidega “↑” ja “↓” saab liikuda läbi käskude ajaloo.

MATLAB-i Workspace. Siia salvestatakse kõik käsureas või skriptis loodud muutujaid.

Current directory /Jooksev kataloog /Текущая директория

Command window /Käsurida /Командная строка

Workspace /Jooksvad andmed /Рабочее пространство

Layout→Default

Preferences→Fonts(šrifti suurus)

3

Page 4: ISS0010 Susteemiteooria. Prx · MATLAB: Skriptid Topelt protsendimärk (“%%”) eraldab skriptisektsioone. Jooksuta neid eraldi vajutades CTRL+Enter↵. Alati on mugavam kirjeldada

MATLAB: Kuidas abi saada?

Et saada käsu kohta abi, kirjuta käsureale

>> help command

kus command on huvi pakkuv käsk. Kui on vaja põhjalikumat käsu kirjeldust, kirjuta

>> doc command

4

Page 5: ISS0010 Susteemiteooria. Prx · MATLAB: Skriptid Topelt protsendimärk (“%%”) eraldab skriptisektsioone. Jooksuta neid eraldi vajutades CTRL+Enter↵. Alati on mugavam kirjeldada

Põhikäsud

>> a=1 % kommentaare eraldame “%”-gaa =

1

>> b = -2; % “;” ó “ära näita väljundit”

>> b^2 % “^” ó astendamineans =

4

>> apb = a + b % a ja b summa ó plus(a,b)apb =

-1

5

Page 6: ISS0010 Susteemiteooria. Prx · MATLAB: Skriptid Topelt protsendimärk (“%%”) eraldab skriptisektsioone. Jooksuta neid eraldi vajutades CTRL+Enter↵. Alati on mugavam kirjeldada

Põhikäsud (jätkub)

>> 1 + 2*sqrt(ab) % “sqrt” ó ruutjuur ans =

1.0000 + 2.0000i

>> log(0) % “Inf” ó “lõpmatus”ans =

-Inf

>> var1 = 3.1415e+3 % Teaduslik arvuvormingvar1 =

3.1415e+003

>> clear all % Tühjenda Workspace-i

“e” ó “eksponent”

6

Page 7: ISS0010 Susteemiteooria. Prx · MATLAB: Skriptid Topelt protsendimärk (“%%”) eraldab skriptisektsioone. Jooksuta neid eraldi vajutades CTRL+Enter↵. Alati on mugavam kirjeldada

Kompleksarvud: meeldetuletus

Kompleksarv on number, mis omab kuju

Reaalosa

Imaginaarosa

7

Page 8: ISS0010 Susteemiteooria. Prx · MATLAB: Skriptid Topelt protsendimärk (“%%”) eraldab skriptisektsioone. Jooksuta neid eraldi vajutades CTRL+Enter↵. Alati on mugavam kirjeldada

Vektorid

Olgu antud reavektor

Sisastame seda MATLAB-i:

>> a = [1 2 3 4 3 2 1]a =

1 2 3 4 3 2 1

8

Page 9: ISS0010 Susteemiteooria. Prx · MATLAB: Skriptid Topelt protsendimärk (“%%”) eraldab skriptisektsioone. Jooksuta neid eraldi vajutades CTRL+Enter↵. Alati on mugavam kirjeldada

Vektorid

Tehe veeruvektoriga:

Sisestame seda MATLAB-i:

>> b = [5; 6; 7; 8; 7; 6; 5] - 4;

>> c = a==b' % võrdleme a ja bc =

1 1 1 1 1 1 1

Siin: lahutamine igast vektori elemendist

Transponeerimine (“'”) muudab veeruvektori reavektoriks ja vastupidi

9

Page 10: ISS0010 Susteemiteooria. Prx · MATLAB: Skriptid Topelt protsendimärk (“%%”) eraldab skriptisektsioone. Jooksuta neid eraldi vajutades CTRL+Enter↵. Alati on mugavam kirjeldada

Diapasoonid

MATLAB-is on väga lihtne luua vahemikke kasutades “:” (koolon) sümbolit.

>> d1 = 0:4

Näited:

>> d2 = 0.3:-0.1:0.1

MATLAB-i kood:

10

Page 11: ISS0010 Susteemiteooria. Prx · MATLAB: Skriptid Topelt protsendimärk (“%%”) eraldab skriptisektsioone. Jooksuta neid eraldi vajutades CTRL+Enter↵. Alati on mugavam kirjeldada

Maatriksid: sisestamine

Read eraldatakse semikooloniga (“;”):

>> A = [9 2 3; -1 3 4; 0 2 1];

Sisestame MATLAB-i maatriksi

11

Page 12: ISS0010 Susteemiteooria. Prx · MATLAB: Skriptid Topelt protsendimärk (“%%”) eraldab skriptisektsioone. Jooksuta neid eraldi vajutades CTRL+Enter↵. Alati on mugavam kirjeldada

Maatriksid: indekseerimine

Näiteks:>> A(1,1) + A(2,3)ans =

13

Elemendi väljavõtmine:

(rida)

(veerg)

12

Page 13: ISS0010 Susteemiteooria. Prx · MATLAB: Skriptid Topelt protsendimärk (“%%”) eraldab skriptisektsioone. Jooksuta neid eraldi vajutades CTRL+Enter↵. Alati on mugavam kirjeldada

Maatriksid: indekseerimine (jätkub)

>> A(3,3) = 4A =

9 2 3-1 3 40 2 4

>> B = A; B(2,:) = 0B =

9 2 3-1 3 40 2 4

Maatriksi elementide asendamine

13

Page 14: ISS0010 Susteemiteooria. Prx · MATLAB: Skriptid Topelt protsendimärk (“%%”) eraldab skriptisektsioone. Jooksuta neid eraldi vajutades CTRL+Enter↵. Alati on mugavam kirjeldada

Maatriksid: tehted

• Transponeerimine:

>> transpose(A)

• Inverteerimine:

>> inv(A)

• Korrutamine:

>> A'

>> A^-1

>> A*A'

14

Page 15: ISS0010 Susteemiteooria. Prx · MATLAB: Skriptid Topelt protsendimärk (“%%”) eraldab skriptisektsioone. Jooksuta neid eraldi vajutades CTRL+Enter↵. Alati on mugavam kirjeldada

Maatriksid: tehted (jätkub)

• Omaväärtuste leidmine:

>> eig(A)ans =

0.6426 7.6787 + 0.4106i7.6787 - 0.4106i

• Karakteristliku polünoomi leidmine:

>> p1 = poly(A)p1 =

1.0000 -16.0000 69.0000 -38.0000

15

Page 16: ISS0010 Susteemiteooria. Prx · MATLAB: Skriptid Topelt protsendimärk (“%%”) eraldab skriptisektsioone. Jooksuta neid eraldi vajutades CTRL+Enter↵. Alati on mugavam kirjeldada

Polünoomid

• Polünoomid MATLAB-is defineeritaksekoefitsientide vektorina. Näiteks, sisestamepolünoomi

• Vastav MATLAB-i kood on

>> p2 = [1 -2 0 5];

16

Page 17: ISS0010 Susteemiteooria. Prx · MATLAB: Skriptid Topelt protsendimärk (“%%”) eraldab skriptisektsioone. Jooksuta neid eraldi vajutades CTRL+Enter↵. Alati on mugavam kirjeldada

Polünoomid: tehted

• Polünoomi juurte leidmine:

• Polünoomide korrutamine (konvolutsioon):

>> p3 = conv(p1,p2);

>> roots(p1)ans =

7.6787 + 0.4106i7.6787 - 0.4106i0.6426

17

Page 18: ISS0010 Susteemiteooria. Prx · MATLAB: Skriptid Topelt protsendimärk (“%%”) eraldab skriptisektsioone. Jooksuta neid eraldi vajutades CTRL+Enter↵. Alati on mugavam kirjeldada

MATLAB: Skriptid

Topelt protsendimärk (“%%”) eraldab skriptisektsioone. Jooksuta neid eraldi vajutades CTRL+Enter↵.

Alati on mugavam kirjeldada mingit arvutamisprotse-duuri kas MATLAB skripti- või funktsioonina.

18

Page 19: ISS0010 Susteemiteooria. Prx · MATLAB: Skriptid Topelt protsendimärk (“%%”) eraldab skriptisektsioone. Jooksuta neid eraldi vajutades CTRL+Enter↵. Alati on mugavam kirjeldada

Simulink: Mudeli loomine

Sisesta MATLAB-i käsuritta: simulinkUue mudeli loomiseks vali File→New→Model

Ploki otsing nime järgi

Siit leiad vajalikke plokke. Vii neid drag-and-drop-i kaudu uue mudeli diagrammile. Topeltklikk avab

valitud teeki

19

Page 20: ISS0010 Susteemiteooria. Prx · MATLAB: Skriptid Topelt protsendimärk (“%%”) eraldab skriptisektsioone. Jooksuta neid eraldi vajutades CTRL+Enter↵. Alati on mugavam kirjeldada

Simulink: näide (püsikiiruse hoidja)

20

Page 21: ISS0010 Susteemiteooria. Prx · MATLAB: Skriptid Topelt protsendimärk (“%%”) eraldab skriptisektsioone. Jooksuta neid eraldi vajutades CTRL+Enter↵. Alati on mugavam kirjeldada

Simulink: näide (jätkub)

21

Page 22: ISS0010 Susteemiteooria. Prx · MATLAB: Skriptid Topelt protsendimärk (“%%”) eraldab skriptisektsioone. Jooksuta neid eraldi vajutades CTRL+Enter↵. Alati on mugavam kirjeldada

Simulink: näide (jätkub)Plokide nimed ja difvõrrandi lahend

Step

Constant Divide Product

Sum Integrator Scope

22