52
MULTIMEDIJOS ĮVADAS Pratybos 1 užsiėmimas

Matlab 1

Embed Size (px)

Citation preview

Page 1: Matlab 1

MULTIMEDIJOS ĮVADAS

Pratybos

1 užsiėmimas

Page 2: Matlab 1

LITERATŪRA

1. A Guide to MATLAB for Beginners and Experienced Users, Brian R. Hunt Ronald L. Lipsman JonathanM. Rosenberg, Cambridge University Press, 2001.

2. Graphics and GUIs with MATLAB, / by Patrick Marchand and O. Thomas Holland.—3rd ed. 2002.

3. MATLAB A Practical Introduction to Programming and Problem Solving, Stormy Attaway, Elsevier/Butterworth-Heinemann, 2009.

Knyga lietuvių kalbą • Skaitmeninis signalų apdorojimas taikant MATLAB :vadovėlis aukštųjų mokyklų

studentams /Dalius Navakauskas, Artūras Serackis ; Vilniaus Gedimino technikos universitetas. Vilnius : Technika, 2008.

Page 3: Matlab 1

Kas gi yra MATLAB ? (1)

MATLABMATLAB yra technini yra techninių skaičiavimų kalba.ų skaičiavimų kalba.

Ir jis naudojamas:

• atliekant matematinius skaičiavimus;• programuojant algoritmus;• modeliuojant;• analizuojant duomenis, tyrimams ir vizualizacijai;• moksliniai ir inžineriniai grafikai;• aplikacijų kūrimui, tame tarpe ir grafiniai sąsajai.

Page 4: Matlab 1

Kas gi yra MATLAB ? (2)

• MATLAB (iš žodžių MATrix LABoratory) yra daugiaplatformė MathWorks programinė įranga, skirta įvairių mokslo šakų problemoms spręsti, ypač inžineriniams ir taikomosios matematikos uždaviniams. Pirminis MATLAB programos tikslas buvo patogus ir greitas manipuliavimas matricomis. Dabar ji išplėsta iki didžiulio galingo paketo, turinčio savitą lengvai perprantamą programavimo kalbą.

Page 5: Matlab 1

Kas gi yra MATLAB ? (3)

• MATLAB yra skriptinė programavimo kalba. Jos programinio kodo prieš vykdant nereikia sukompiliuoti. Interpretatorius skriptą vykdo eilutė po eilutės. Tai sistemai suteikia ir privalumų ir trūkumų – pagreitina ir palengvina patį programavimo procesą, tačiau lėtesnis tampa programos vykdymas.

Page 6: Matlab 1

MATLAB dalysMATLAB turi penkias pagrindines dalis:

1.1.Kalba MATLABKalba MATLAB – tai aukšto lygio matricų ir masyvų kalba. Ji turi funkcijas, srautų valdymą, duomenų struktūras, įvestį/išvestį ir objektiškai orientuoto programavimo bruožus.

2.2.MATLAB aplinkaMATLAB aplinka – tai vartotojo ar programuotojo įrankių rinkinys;

3.3.Valdoma grafikaValdoma grafika – tai MATLAB grafinė sistema su aukšto lygio komandomis, skirtomis 2D ir 3D vizualizacijai, vaizdų apdorojimams, animacijai ir iliustruotai grafikai;

4.4.Matematinių funkcijų bibliotekaMatematinių funkcijų biblioteka – tai platus rinkinis algoritmų pradedant nuo paprasčiausių matematinių funkcijų iki sudėtingiausių algoritmų;

5.5.Programinė sąsajaPrograminė sąsaja – tai biblioteka skirta rašyti programas kitomis kalbomis (pvz. C, FORTRAN) ir sąveikauti su MATLAB.

Page 7: Matlab 1

Programos MATLAB darbalaukis

Page 8: Matlab 1

Redaktorius (1)

Page 9: Matlab 1

Redaktorius (2)Redaktorius (EditorEditor) – įrankis darbui su M-failais. M-failas – tai tekstinis

failas, kuriame saugomas MATLAB skriptas (script) arba funkcija (function). Jei M-failo pradžioje yra speciali sintaksė, apibrėžianti f-ją, tada failas gali būti iškviečiamas kaip funkcija. Jei M-faile išsaugotas komandų ir išraiškų rinkinys, tada tai bus skriptas, kurį galima paleisti vykdymui paspaudus Run ikoną Redaktoriaus įrankių juostoje arba <F5>, arba Komandiniame lange surinkus failo pavadinimą be plėtinio .m.

Kur programuoti – ar Komandiniame lange, ar Redaktoriuje – priklauso nuo to, ar norite darbą išsaugoti, ar ilgas bus skriptas ir pan. Komandiniame lange patogu išbandyti naujas funkcijas, greitai patikrinti idėjas, kintamųjų saugomas reikšmes. Redaktorius naudingas tada, kai reiks darbą išsaugoti, kai ruošiamasi rašyti ilgą skriptą – paleidus skriptą (<F5>) yra inerpretuojamos (įvykdomos) visos jame surašytos eilutės, todėl net ir šiek tiek pakoregavus skriptą bus paprasta įvykdyti visas komandas iš naujo.

Reikalavimai M-failo pavadinimui – vardas gali būti sudaromas iš lotyniškų raidžių, skaitmenų, apatinio brūkšnio ir turi prasidėti raide (negali būti jame tarpų, specialių simbolių ir negali prasidėti skaičiumi).

Page 10: Matlab 1

KintamiejiKintamojo pavadinimas susideda iš raidžių, skaitmenų ir specialiųjų ženklų (negali būti ženklų

( ), . , ‘ , “ , ; ir kt.). Nerekomenduojama kintamojo vardą sudaryti daugiau kaip iš šešių simbolių. Nepatartina kintamojo vardą pradėti nuo skaičiaus. Matlab turi rezervuotus žodžius, kurių negalima vartoti kaip kintamųjų vardų: for, end, if, while, function, return, elseif, case, otherwise, switch, continue, else, try catch, global, persistent, break.

Taip pat būtina atkreipti dėmesį į tai, kad, jei sukuriamas kintamasis tokiu pat vardu kaip egzistuojanti funkcija, bus kreipiamasi į kintamąjį (kintamasis viršesnis už funkciją pagal

paieškos hierarchiją). Funkcija bus tol nepasiekiama, kol nebus ištrintas kintamasis tokiu pat pavadinimu iš Workspace. Pvz, įvykdžius komandą

sin = 44; bus sukurtas kintamasis sin ir funkcija sin bus nepasiekiama iš Komandinio lango arba skripto.

Kitoms funkcijoms ši funkcija išliks pasiekiama.

Kintamieji (WorkspaceWorkspace) – rodomi visi darbo metu sukurti ir atmintyje saugomi kintamieji. Šie kintamieji yra pasiekiami iš Komandinio lango ir skripto, bet funkcijoms jie nematomi. Visi kintamieji atmintyje saugomi iki Matlab darbo pabaigos. Komanda clear kintamojo_vardas ištrina iš atminties kintamąjį kintamojo_vardas.

Komanda clear ištrina visus kintamuosius iš atminties. Kintamųjų vardai parenkami laikantis šių taisyklių: (1) vardas sudaromas iš lotyniškų raidžių, skaitmenų, pabraukimo simbolio "_", ir turi prasidėti raide; (2) didžiosios ir mažosios raidės yra kaip skirtingi simboliai kintamiesiems pavadinti.

Page 11: Matlab 1

Reikšmių priskyrimas (1)

Priskyrimo operatorius ==

Sintaksė : kkintamasis = reikintamasis = reikšmėšmė

>> mynum = 6

mynum =

6

>>

Page 12: Matlab 1

Reikšmių priskyrimas (2)Jei padaroma klaida, atsiranda pranešimas:

>> 6 = mynum

??? 6 = mynum |Error: The expression to the left of the equals sign is not a validtarget for an assignment. >>

Jie išraiškos pabaigoje uždėti kabliataškį ( ;; ), rezultatas nebus išvedamas:

>> res = 9-2;>>

Page 13: Matlab 1

Reikšmių priskyrimas (3)

>> mynum = 3mynum =3

>> mynum = 4 + 2mynum =6

>> mynum = mynum + 1mynum =7

Page 14: Matlab 1

Elementarios aritmetinės operacijos

Aritmetinėse išraiškose naudojami šie aritmetinių operacijų ženklai: +, –, *, /, \ (atvirkštinė dalyba), ^ (kėlimas laipsniu). Didžiausią prioritetą turi kėlimas laipsniu, po to daugyba ir dalyba, sudėtis ir atimtis. Vienodo prioriteto operacijos vykdomos iš kairės į dešinę. Norint pakeisti eiliškumą, naudojami skliaustai. Būtina apskliausti trupmenos skaitiklyje arba vardiklyje esančias išraiškas.

Page 15: Matlab 1

Matematiniai operatoriai

++ sudėtis (addition);

-- atimtis (negation, subtraction);

** daugyba (multiplication);

// dalyba (division), pvz., 10/5 yra 2;

\\ atvirkštinės dalyba arba dalyba iš kairės ( division), pvz., 5\10 yra 2;

^̂ kėlimas laipsniu (exponentiation), pvz., 5^2 yra 25)

Page 16: Matlab 1

Sudėtis

• Sintaksė: ++ sudėtis (addition);• Matematinė išraiška: a + b• Pavyzdys: 0.5 + 0.9

>> 4 + 5*3ans =19

>> (4 + 5) * 3ans =27

Page 17: Matlab 1

Atimtis

• Sintaksė: -- atimtis (negation, subtraction);

• Matematinė išraiška: a - b

• Pavyzdys: 12 - 7

>> 3 + 55 - 62 + 4 - 5 ...

+ 22 - 1

ans =

16

Page 18: Matlab 1

Daugyba

• ** daugyba (multiplication);

• Sintaksė: - atimtis (negation, subtraction);

• Matematinė išraiška: a * b

• Pavyzdys: 8 * 5.7

>> 5 *33

ans =

165

Page 19: Matlab 1

Dalyba Atvirkštinės dalyba (dalyba iš

kairės)

• Sintaksė: // dalyba (division), pvz., 10/5 yra 2;

• \\ atvirkštinės dalyba arba dalyba iš kairės ( division), pvz., 5\10 yra 2;

• Matematinė išraiška: a / b

• Pavyzdys: 10 / 2 5\10

Page 20: Matlab 1

Kėlimas laipsniu• Sintaksė: ^̂ kėlimas laipsniu (exponentiation), pvz., 5^2 yra 25;• Matematinė išraiška: a ^ b• Pavyzdys: 2 ^ 5

>> 2 * 10^4ans =20000

>> 2e4ans =20000

Page 21: Matlab 1

Veiksmų eileškumas

SKLIAUSTAI

>> 4 + 5*3ans =

19

>> (4 + 5) * 3ans =

27

Page 22: Matlab 1

Užduotis

• Apskaičiuoti pateiktas išraiškas:

Page 23: Matlab 1

Operatorius ::

Sveikųjų skaičių seka:1:10 1 2 3 4 5 6 7 8 9 10

Skaičių seka su žingsniu pi/4 :0:pi/4:pi 0 0.7854 1.5708 2.3562 3.1416

Atvirkštinė skaičių seka su žingsniu 7 :100:-7:50 100 93 86 79 72 65 58 51

Page 24: Matlab 1

Konstantos

Page 25: Matlab 1

Dažniausiai naudojamos matematinės funkcijos (1)

Page 26: Matlab 1

Dažniausiai naudojamos matematinės funkcijos (2)

>> exp (3)ans = 20.0855

>> 2 * sin(1.4)ans = 1.9709

>> log(5) - tan(1.3)/2ans = -0.1916

Page 27: Matlab 1

Duomenų tipai (1)

IntInt tipas (integer types) – sveikieji skaičiai,int8, int16, int32, int64.

UintUint tipas (unsigned integer types) – sveikieji teigiami skaičiai ir 0.uint8, uint16, uint32, uint64.

Pavyzdys:

>> intmin('int8')ans =-128>> intmax('int8')ans =127

Page 28: Matlab 1

Duomenų tipai (2)

• CharChar (characters, simboliai) - ‘x’ , ‘a’ , ‘b’ ;

• StringsStrings (simbolių eilutės) - ‘cat’ ;

• LogicalLogical (Loginiai) – jų reikšmė gali būti true arba false.

Page 29: Matlab 1

Duomenų įvestis (1)

Funkcija input inputSkaičiaus įvestis:>> rad = input('Enter the radius: ')Enter the radius: 5rad =5

Simbolio įvestis:>> letter = input('Enter a char: ','s')Enter a char: gletter =g

Page 30: Matlab 1

Duomenų įvestis (2)

Įvestis su tarpais

>> mystr = input('Enter a string: ', 's')Enter a string: gomystr = go>> length(mystr)ans =6

Page 31: Matlab 1

Duomenų įvestis (3)Galima naudoti ir kabutes:

>> name = input('Enter your name: ')Enter your name: 'Stormy'name =Stormy

Bet čia jau kitaip:

>> name = input('Enter your name: ','s')Enter your name: 'Stormy'name ='Stormy'>> length(name)ans =8

Page 32: Matlab 1

Duomenų įvestis (4)Jei padaryta klaida:>> num = input('Enter a number: ')Enter a number: t??? Error using = = > inputUndefined function or variable 't'.Enter a number: 3num =3

Ar čia klaida(???) :>> t = 11;>> num = input('Enter a number: ')Enter a number: tnum =11

Page 33: Matlab 1

Duomenų išvestis (1)

Funkcijos disp and fprintfdisp and fprintfNeformatuota duomenų išvestis:>> disp('Hello')Hello>> disp(4^3)64

Formatuota duomenų išvestis:>> fprintf('The value is %d, for sure!\n',4^3)The value is 64, for sure!>>

Page 34: Matlab 1

Duomenų išvestis (2)

Ženkliuko % reikšmės:•%d - integer (it actually stands for decimal integer)•%f - float (real number)•%c - single character•%s – string

PASTABA: LABAI PANAŠI DUOMENŲ IŠVESTIS C PROGRAMAVIMO KALBOJE

Page 35: Matlab 1

Duomenų išvestis (3)

Norint išvesti du kintamuosius:>> fprintf('The int is %d and the char is %c\n', ...33 - 2, 'x')The int is 31 and the char is x

Galima nurodyti ir lauko plotį:>> fprintf('The int is %3d and the float is %6.2f\n',5,4.9)The int is 5 and the float is 4.90

Page 36: Matlab 1

Pagalba

Galimi tokie būdai gauti pagalbą:• Komanda HELP• Pagalbos langas• MATLAB Help Desk• Internetiniai puslapiai apie MATLAB• Informacija iš The MathWorks, Inc.

• Pavyzdys:Noriu sužinoti apie komandas Graf2d arba Graf3dHelp Graf2d

Page 37: Matlab 1

Grafikų sudarymas (1)

Funkcija plotplot>> t = 0:pi/100:2*pi;

y = sin(t);

plot(t,y)

Page 38: Matlab 1

Grafikų sudarymas (2)

Keli grafikai viename

lange:

>> t = 0:pi/100:2*pi;

y1 = sin(t);

y2 = sin(t-.25);

y3 = sin(t-.5);

plot( t, y1, t, y2, t, y3)

Page 39: Matlab 1

Grafiko redagavimas (1)

Galima redaguoti spalvas (colorcolor), linijų tipus (line line typestypes) ir žymeklių tipus (marker typesmarker types).

Sintaksė:Plot(x,y,’ color_ line types_ marker types’ )Plot(x,y,’ color_ line types_ marker types’ )

Pavyzdys:

plot ( x,y,plot ( x,y, ’ y : ’ y : ++ ’’ ) )

Page 40: Matlab 1

Grafiko redagavimas (2)

Galimos spalvos:bb bluecc cyangg greenkk blackmm magentarr redyy yellow

Page 41: Matlab 1

Grafiko redagavimas (3)Galimi žymeklių tipai (marker typesmarker types): o o circledd diamondhh hexagramp p pentagram++ plus.. pointss square** starvv down triangle<< left triangle>> right triangle^̂ up trianglexx x-mark

Page 42: Matlab 1

Grafiko redagavimas (4)

Galimi linijų tipai (line typesline types):

---- dashed

-.-. dash dot

:: dotted

-- solid

Page 43: Matlab 1

Grafiko papildymas nauja kreive

Komanda hold onhold on

Pavyzdys:

[x,y,z] = peaks;contour(x,y,z,20,'k')hold onpcolor(x,y,z)shading interp

Page 44: Matlab 1

Grafiko ašių redagavimas (1)

• Galima nurodyti ašių mažiausią ir didžiausią rekšmes:axis( [xmin xmax ymin ymax] )

• Galima sukurti vienodo dydžio X ir Y ašis:axis square

• Ši funkcija sukuria tarpinių reikšmių žymėjimą X ir Y ašyse:axis equal

• Ši funkcija įjungia nustatytuosius parametrus:axis auto

• Šios funkcijos jungia / išjungia ašių ir tarpinių reikšmių žymėjimus:axis onaxis off

• Ši funkcija įjungia / išjungia tinklelį:grid ongrid off

Page 45: Matlab 1

Grafikų ašių redagavimas (2)Šios funkcijos įkelia ašių pavadinimus:xlabel, ylabel, zlabel

Funkcija texttext įkelia tekstą, nurodant jo vietą.

Pavyzdys:

t = -pi:pi/100:pi;y = sin(t);plot(t,y)axis([-pi pi -1 1])xlabel( ' -\pi \leq \it t \leq \pi ' )ylabel( ' sin(t) ' )Title ( ' Funkcijos SIN grafikas ')text(-1, 1/3, ' \it {Cia yra simetrija}' )

'

Page 46: Matlab 1

Pavyzdys (1) Kodas

% This creates 2 different plots, in 2 different% Figure Windows, to demonstrate some plot featuresclfx = 1:5; % Not necessaryy1 = [2 11 6 9 3];y2 [4 5 8 6 2];% Put a bar chart in Figure 1figure(1)bar(x,y1)% Put plots using different y values on one plot% with a legendfigure(2)plot( x,y1,'k')hold onplot( x,y2,'ko')grid onlegend('y1','y2')

Page 47: Matlab 1

Pavyzdys (2)Rezultatas

Page 48: Matlab 1

3D grafikai ir diagramos (1)>> x = 1:5;y = [0 -2 4 11 3];z = 2:2:10;plot3(x,y,z,'k*')gridxlabel('x')ylabel('y')zlabel('z')title('3D Plot')

Page 49: Matlab 1

3D grafikai ir diagramos (2)>> y = 1:6;

z = [33 11 5 9 22 30];

bar3(y,z)

xlabel('x')

ylabel('y')

zlabel('z')

title('3D Bar')

Page 50: Matlab 1

3D grafikai ir diagramos (3)t = 0:0.1:10*pi;

x = exp(-t/20).*cos(t);

y = exp(-t/20).*sin(t);

z = t;

plot3(x,y,z);

xlabel('x');

ylabel('y');

zlabel('z');

Page 51: Matlab 1

Atmintinė

Naudinga spartesniam darbui • CTRL+r – užkomentuoti keletą eilučių vienu metu (prieš

tai tas eilutes pažymėti) • CTRL+t – atkomentuoti keletą eilučių vienu metu (prieš

tai tas eilutes pažymėti) • F5 – paleisti skripto vykdymą (paleidimo metu darbas

išsaugomas automatiškai) • CTRL+c – nutraukia skripto vykdymą (jei buvo paleistas

begalinis ciklas ar pan.) • Būna situacijų, kad, kai prisikaupia daug kintamųjų

Workspace, MATLAB'as pradeda vykdyti klaidingus skaičiavimus. Tokioje situacijoje padeda clear all komanda

Page 52: Matlab 1

Dažnai daromos klaidos

• M-failų pavadinimai sukuriami su tarpais, minusais arba pradedami skaičiumi

• Vykdant operacijas su masyvais, užmirštamas taškas prieš *,/,^ operatorius – turi būti: .* ./ .^