MATLAB OPAS. Matti Pastell. matti.pastell@helsinki.fi. Maataloustieteiden laitos, Helsingin Yliopisto. 11. tammikuuta 2010



Samankaltaiset tiedostot
Matriisit ovat matlabin perustietotyyppejä. Yksinkertaisimmillaan voimme esitellä ja tallentaa 1x1 vektorin seuraavasti: >> a = 9.81 a = 9.

SciPy OPAS. Matti Pastell. Maataloustieteiden laitos, Helsingin yliopisto. 12. tammikuuta 2010.

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

Zeon PDF Driver Trial

Harjoitus 1: Matlab. Harjoitus 1: Matlab. Mat Sovelletun matematiikan tietokonetyöt 1. Syksy 2006

Octave-opas. Mikä on Octave ja miksi? Asennus

Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla

TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja tietokonetekniikan laitos. Harjoitustyö 4: Cache, osa 2

CVS. Kätevä väline usein päivitettävien tiedostojen, kuten lähdekoodin, hallitsemiseen

Valitse ruudun yläosassa oleva painike Download Scilab.

Tilastolliset ohjelmistot A. Pinja Pikkuhookana

Matlab-tietokoneharjoitus

Matlab- ja Maple- ohjelmointi

Muuttujien määrittely

Valitse aineisto otsikoineen maalaamalla se hiirella ja kopioimalla (Esim. ctrl-c). Vaihtoehtoisesti, Lataa CSV-tiedosto

Jypelin käyttöohjeet» Ruutukentän luominen

Muita kuvankäsittelyohjelmia on mm. Paint Shop Pro, Photoshop Elements, Microsoft Office Picture Manager

Juha Haataja

DXL Library ja DXL-kielen olemus. Pekka Mäkinen SoftQA Oy http/

Ohjelmoinnin perusteet Y Python

SCI- A0000: Tutustuminen Linuxiin, syksy 2015

Tässä dokumentissa on ensimmäisten harjoitusten malliratkaisut MATLABskripteinä. Voit kokeilla itse niiden ajamista ja toimintaa MATLABissa.

Matlabperusteita, osa 1. Heikki Apiola Matlab-perusteita, osa 1. Heikki Apiola. 12. maaliskuuta 2012

MrSmart 8-kanavainen lämpötilamittaus ja loggaus, digitoija ja talletusohjelma

Moottorin kierrosnopeus Tämän harjoituksen jälkeen:

Automaattitilausten hallinta

Ksenos Prime Käyttäjän opas

OpeOodi Opiskelijalistojen tulostaminen, opiskelijoiden hallinta ja sähköpostin lähettäminen

Google-dokumentit. Opetusteknologiakeskus Mediamylly

Laskuharjoitus 9, tehtävä 6

Opiskelun ja työelämän tietotekniikka (DTEK1043)

ASCII-taidetta. Intro: Python

Vedä ja pudota Maamittauslaitoksen JPEG2000-ortoilmakuva GeoTIFF-muotoon

GeoGebra-harjoituksia malu-opettajille

Luento 4. Timo Savola. 21. huhtikuuta 2006

Matlabin perusteita Grafiikka

Ohjelmoinnin perusteet Y Python

ELEC-C5210 Satunnaisprosessit tietoliikenteessä Harjoitus M1,

Ohjeita kirjan tekemiseen

Sonera Viestintäpalvelu VIP VIP Laajennettu raportointi Ohje

Ohjeistus yhdistysten internetpäivittäjille

Enigmail-opas. Asennus. Avainten hallinta. Avainparin luominen

LUSAS tiedosto-opas. Matti Lähteenmäki

Excel syventävät harjoitukset

1 Asentaminen. 2 Yleistä ja simuloinnin aloitus 12/

Matriisilaskenta Laskuharjoitus 1 - Ratkaisut / vko 37

Johdatus ohjelmointiin

StatCrunch -laskentasovellus

Opiskelijalistojen tulostaminen, opiskelijoiden hallinta ja sähköpostin lähettäminen

Ohjelmoinnin perusteet Y Python

LUENTO 7 TAULUKKOLASKENTA I

GIS-automatisointi ja ohjelmointi/skriptaus. Harri Antikainen

Tekstieditorin käyttö ja kuvien käsittely

Autentikoivan lähtevän postin palvelimen asetukset

plot(f(x), x=-5..5, y= )

Julkaiseminen verkossa

5. HelloWorld-ohjelma 5.1

Ohjelmoinnin perusteet Y Python

IDL - datan sovitus. ATK tähtitieteessä. IDL - esimerkiksi linfit. IDL - esimerkiksi linfit

KÄYTTÖOHJE. Servia. S solutions

Operatiiviset päivät Ohjeita luennoitsijoille AV-tekniikasta

Tehtävä. Asetukset. Moodlen versiossa 2.3. käyttöön tuli uusi tehtävätyyppi, jonka on tarkoitus tulevaisuudessa korvata aiemmat tehtävätyypit.

GDAL ja WFS: suora muunnos ogr2ogr-ohjelmalla

OpeOodi Opiskelijalistojen tulostaminen, opiskelijoiden hallinta ja sähköpostin lähettäminen

Tietosuoja-portaali. päivittäjän ohje

BlueJ ohjelman pitäisi löytyä Development valikon alta mikroluokkien koneista. Muissa koneissa BlueJ voi löytyä esim. omana ikonina työpöydältä

SQL Buddy JAMK Labranet Wiki

Korpusten käsittely clt131, P Luento 4

SQLite selvitysraportti. Juha Veijonen, Ari Laukkanen, Matti Eronen. Maaliskuu 2010

Ohjeita LINDOn ja LINGOn käyttöön

mlvektori 1. Muista, että Jacobin matriisi koostuu vektori- tai skalaariarvoisen funktion F ensimmäisistä

Ohjelmoinnin perusteet Y Python

MicroStation V8i-käyttöympäristö

KÄYTTÖOHJE LATOMO VERSO

Epooqin perusominaisuudet

Pythonin Kertaus. Cse-a1130. Tietotekniikka Sovelluksissa. Versio 0.01b

Ohjelmisto on selainpohjaisen käyttöliittymän tarjoava tietokantajärjestelmä merikotkien seurantaan WWF:n Merikotka-työryhmän tarpeisiin.

1 www-sivujen teko opetuksessa

MICROSOFT EXCEL 2010

Gimp JA MUUT KUVANKÄSITTELYOHJELMAT

ATK tähtitieteessä. Osa 5 - IDL datan sovitusta ja muita ominaisuuksia. 25. syyskuuta 2014

Kirjaudu sisään palveluun klikkaamalla Omat kartat -painiketta.

Kieliteknologian ATK-ympäristö Viides luento

SMART Board harjoituksia 17 - Notebook 10 Tiedostomuotoihin tallentaminen Yritä tehdä tehtävät sivulta 1 ilman että katsot vastauksia.

Matriiseista. Emmi Koljonen

Ohjelmoinnin peruskurssi Y1

Kieliteknologian ATK-ympäristö Viides luento

MixW ja Dx-vihjeet (ohje) oh3htu

ASENNUS- JA KÄYTTÖOHJE

Transkribuksen pikaopas

MATLABin alkeita J.Merikoski JYFL 2009 fysp120

Lemonsoft SaaS -pilvipalvelu OHJEET

UCOT-Sovellusprojekti. Asennusohje

Raspin Geany-IDE:n etäkäyttö

Ohjelmoinnin perusteet Y Python

EMVHost Online SUBJECT: EMVHOST ONLINE CLIENT - AUTOMAATTISIIRROT COMPANY: EMVHost Online Client sovelluksen käyttöohje AUTHOR: DATE:

Harjoitus 4 -- Ratkaisut

Tilastolliset toiminnot

Hieman linkkejä: lyhyt ohje komentoriviohjelmointiin.

Transkriptio:

MATLAB OPAS Matti Pastell matti.pastell@helsinki.fi Maataloustieteiden laitos, Helsingin Yliopisto 11. tammikuuta 2010 1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 5 0 5 10 15 20 25 http://papers.mpastell.com/matlab_opas.pdf

SISÄLTÖ 2 Sisältö 1 Johdanto 4 2 Ohjelman hankinta ja käytön aloitus 5 3 Muuttujat ja peruslaskutoimitukset 5 3.1 Muuttujien määrittely ja peruslaskutoimitukset.......... 5 4 Vektorit ja Matriisit 6 4.1 Vektorilaskutoimituksia....................... 6 4.2 Matriisien käsittelyä......................... 7 5 Datan peruskäsittely ja kuvaajat 7 5.1 Esimerkkiohjelma 2d kuvaaja ja sen tallennus............ 9 5.2 Esimerkkiohjelma 3d kuvaaja ja sen tallennus........... 10 5.3 Julkaisukelpoiset kuvat....................... 10 6 Tiedostojen käsittely ja hakemistot 11 7 Omat ohjelmat 12 7.1 Skriptit............................... 12 7.2 Funktiot............................... 13 8 Perusohjelmointi 14 8.1 Silmukka eli loop.......................... 14 8.2 Ehtolauseet: if, else ja elseif.................... 15 9 Tehtävien automatisointi eli Batch-mode 16 10 Sekalaisia vinkkejä 17 10.1 Hyödyllisiä komentoja....................... 17 10.2 Piikkien etsintä datasta....................... 18 10.3 Tekstitiedostojen muunto *.mat formaattiin............ 19 10.4 Matlabin dialogit.......................... 20 11 Signaalin käsittely 20 11.1 FFT - taajuuden etsintä signaalista................. 20 12 Neuroverkot 21 12.1 Probabilistic Neural Network.................... 21 13 Sumea Logiikka 23

SISÄLTÖ 3 Viitteet 25

1 Johdanto 4 1 Johdanto Tämän oppaan tarkoitus on opettaa MATLABin 1 peruskäyttö ja hyödyllisiä komentoja. Mukana on myös muutama hieman edistyneempi esimerkki. MATLAB on kaupallinen ohjelma ja sen hankintahinta on melko suuri, tosin opiskelijaversio on huomattavasti halvempi, n. 70 e. Helsingin yliopistolla on ohjelmistoon laaja lisenssi, joka ei kuitenkaan kata ohjelman asennusta opiskelijoiden omille koneille. Kotoa ohjelmaa pääsee käyttämään ottamalla yhteyden yliopiston ruuvi.helsinki.fi (edellyttää Unix lupaa). Pyrin täydentämään opusta tarpeen mukaan ja viimeisimmän version löytää kotisivuiltani. Suositan aloittelijalle komentojen testaamista samalla, kun luet opasta. Parannusehdotukset ja virheilmoitukset voi lähettää sähköpostitse matti.pastell@helsinki.fi. Opas on kirjoitettu L A TEX- kuvauskielellä. Usein kysytään eikö olisi helpompaa käyttää Exceliä, SPSS tms. Komentorivipohjaiset ohjelmat saattavat tuntua aluksi vaikeilta käyttää, mutta niiden ominaisuudet ovat ylivoimaisia esim. suurten datamäärien käsittelyssä, omien funktioiden kirjoittamisessa ja simuloinnissa. Jatkuvissa mittauksissa syntyy tarve automatisoida datan käsittely. Useita satoja tai tuhansia tiedostoja analysoivan ohjelman teko on Matlabissa verraten helppoa ja säästää valtavasti aikaa. Lisäksi hieman nopeammissa mittauksissa syntyy niin paljon dataa, että sen käsittely Excelissä on käytännössä mahdotonta. Esim. 50 Hz mittaustaajuudella vuorokauden mittauksessa kertyy n. 4,2 miljoonaa datapistettä eli n. 63 Excelin täyttä saraketta. Matlabissa on graafisia työkaluja mm. tiedostojen avaamiseen ja kuvaajien piirtämiseen. Lisäksi ohjelmaan on saatavissa suuri määrä erilaisia "toolboxeja" esim. käyrän sovitusta, tilastoanalyyseja, mittauksia ja neuroverkkomalleja varten. Helsingin yliopistolla on kattava Matlab lisenssi (eli sisältää myös runsaasti toolboxeja), joka kattaa ohjelman käytön laitosten koneissa. Lisäksi Matlabiin kuuluu graafinen mallin rakennusympäristö Simulink, jota ei käsitellä tässä oppaassa mutta verkosta löytyy runsaasti ohjeita myös Simulinkille. Koodi on tekstissä värillistä ja kommentit on merkitty % merkillä 1 MATLAB http://www.mathworks.com

2 Ohjelman hankinta ja käytön aloitus 5 2 Ohjelman hankinta ja käytön aloitus Kuten edellä on mainittu niin Matlab on kaupallinen ohjelma. Tietoa Matlabin hankinnasta löytyy osoitteesta www.mathworks.com. Helsingin yliopiston lisenssi ei valitettavasti sisällä opiskelijoiden kotikäyttöä, mutta kotona Matlabia voi käyttää verkon välityksellä ottamalla ssh-yhteyden yliopiston Unix palvelimelle ruuvi.helsinki.fi, unix tunnukset saat laitoksen ATK-yhdyshenkilöltä. Asennettuasi ohjelman se löytyy Windowsin käynnistä valikosta: Matlab kansiosta ja unixissa/linuxissa kirjoittamalla komentoriville matlab. 3 Muuttujat ja peruslaskutoimitukset 3.1 Muuttujien määrittely ja peruslaskutoimitukset Peruslaskutoimitusten teko on helppoa. Muuttujia ei tarvitse erikseen määritellä vaan määrittely tapahtuu automaattisesti, kun muuttujalle annetaan arvo. Eli yksinkertaisesti kirjoitetaan komentoriville(ikkunaan): %Muuttuja a s a a arvon 1 a =1 %Muuttuja b s a a arvon 2 b=2 Tämän jälkeen voidaan suorittaa peruslaskutoimitus määritellyillä muuttujilla. Huomaa, että muuttujien kirjankoolla on väliä eli a A. c=a+b c=a b c=a *b c=a / b Huomaat, että ohjelma tulostaa vastauksesi ruudulle. Yksittäisissä laskutoimituksissa tämä ei haittaa, mutta suurilla datamäärillä tulosta ei haluta aina nähdä. Laskutoimituksen tulos saadaan piilotettua lisäämällä ; komennon perään. Tulos saadaan jälleen ruudulle kirjoittamalla muuttujan nimi. Kaikki määrittelemäsi muuttujat tallentuvat ohjelmien työtilaan Matlabissa se on näkyvissä ohjelman käyttöliittymässä. Saat listattua muuttujat työtilaan komennolla who ja työtilan saa tyhjennettyä komennolla clear. %N ä y t t ä ä k a i k k i t y ö t i l a s s a o l e v a t t i e d o s t o t

4 Vektorit ja Matriisit 6 who %T y h j e n t ä ä k a i k k i m u i s t i s s a o l e v a t m u u t t u j a t c l e a r %T y h j e n t ä ä ruudun c l c 4 Vektorit ja Matriisit Ohjelmat käsittelevät dataa matriisimuodossa tai vektorimuodossa. Muuttuja, jossa on vain yksi rivi tai sarake on vektori ja muuttuja, jossa on monta saraketta ja riviä on matriisi (array). Myös matriisimuotoisilla muuttujilla voidaan suorittaa skalaarilaskutoimituksia ja tässä oppaassa keskitytäänkin lähinnä niihin. Seuraavassa muutamia esimerkkejä laskemisesta vektoreilla ja matriiseilla. 4.1 Vektorilaskutoimituksia %Luodaan v e k t o r i, j o k a s a a a r v o t 1 5} v e k t o r i =1:5 v e k t o r i =[1 2 3 4 5] %Yhteen j a v ä h e n n y s l a s k u v e k t o r i + v e k t o r i v e k t o r i v e k t o r i v e k t o r i +5 v e k t o r i 5 %K e r r o t a a n koko v e k t o r i 2 : l l a t u p l a = v e k t o r i *2 %S k a l a a r i t u l o. HUOMAA p i s t e " v e k t o r i " : n j ä l k e e n k e r t o o % o h j e l m a l l e e t t ä k y s e e s s ä on s k a l a a r i l a s k u t o i m i t u s v e k t o r i. * t u p l a %V e k t o r i t u l o v e k t o r i * t u p l a %J a k o l a s k u v e k t o r i. / t u p l a %K o r o t e t a a n t o i s e e n v e k t o r i. ^2 luku =" v e k t o r i n " n e l j ä s numero luku = v e k t o r i ( 4 ) %V e k t o r i " l u v u t " = " v e k t o r i n " 3 : s 5: s numero l u v u t = v e k t o r i ( 3 : 5 )

4.2 Matriisien käsittelyä 7 4.2 Matriisien käsittelyä Matlabin vahvuus datan käsittelyssä on datan käsittely matriisimuodossa, joka tekee suurenkin datamäärän käsittelyn joustavaksi. Yleensä perusmittausdatan käsittelyssä ei tarvita osaamista matriisilaskennassa, vaan halutaan esimerkiksi, kertoa ja jakaa koko datamäärä esim. kalibrointikertoimellatms. tämä käy komentoriviltä hyvin helposti. Usein laskutoimituksia halutaan suorittaa myös riveittäin eli esim. laskea jokaisen rivin summa, keskiarvo, hajonta... Tämä esitellään seuraavassa kappaleessa. %Luodaan 3x2 m a t r i i s i m a t r i i s i =[3 2 ; 4 1 ; 6 3] %K e r r o t a a n k a i k k i m a t r i i s i n a r v o t 2 : h d e l l a t u p l a = m a t r i i s i * 2 ; %S k a l a a r i t u l o t u p l a. * m a t r i i s i % T r a n s p o n o i d a a n m a t r i i s i t r a n s m a t r i i s i = m a t r i i s i ' %M a t r i i s i t u l o m a t r i i s i * t r a n s m a t r i i s i m a t r i i s i * m a t r i i s i ' Jne. Käyttäytyvät samoin kuin vektorit. %V a l i t a a n m a t r i i s i n ensimmäinen r i v i ( 1 ) j a k a i k k i % s a r a k k e e t r i v i = m a t r i i s i ( 1, : ) %V a l i t a a n m a t r i i s i n kolmas ( 3 ) s a r a k e j a k a i k k i r i v i t ( : ) s a r a k e = m a t r i i s i ( :, 3 ) %V a l i t a a n m a t r i i s i n r i v i t 1 2 ( 1 : 2 ) j a s a r a k k e e t 2 3 % ( 2 : 3 ) o s a m a t r i i s i = m a t r i i s i ( 1 : 2, 2 : 3 ) %M a t r i i s i n koko s i z e ( m a t r i i s i ) 5 Datan peruskäsittely ja kuvaajat Tässä kappaleessa tutustutaan data peruskäsittelyyn. Aloitetaan luomalla data satunnaisluvuista ja laskemalla sen keskiarvo mean ja keskihajonta std. Ohjelma palauttaa ruudulle datan jokaisen sarakkeen keskiarvon ja keskihajonnan.

5 Datan peruskäsittely ja kuvaajat 8 %Luodaan d a t a (10 x5 m a t r i i s i ) s a t u n n a i s l u v u i s t a v ä l i l l ä %0 1 j a k e r r o t a a n se 1 0 : l l ä d a t a = rand ( 1 0, 5 ) ; %K e s k i a r v o mean ( d a t a ) %K e s k i h a j o n t a s t d ( d a t a ) %T a l l e n t a a k e s k i a r v o n m u u t t u j a a n ` ` k e s k i a r v o ` ` k e s k i a r v o =mean ( d a t a ) ; Usein datasta halutaan myös kuvaaja. Ohjelmassa on mahdollisuus piirtää useita erilaisia kuvaajia, alla muutamia yksinkertaisia esimerkkejä. %V i i v a k u v a a j a p l o t ( x, y ) %V i i v a k u v a a j a, v i i v a n l e v e y s, t y y p p i k a t k o v i i v a j a v ä r i %punainen k s. s e u r a a v a e s i m e r k k i p l o t ( x, y, ' r ', ' l i n e w i d t h ', 2 ) ; %P ylväsdiagr a mmi b a r ( d a t a ) %P i i r r e t ä ä n h i s t o g r a m m i e l i jakauma h i s t ( d a t a ) %P i i r a k k a d i a g r a m m i p i e ( d a t a ) Kuvien muokkaaminen onnistuu Matlabissa suoraan kuvaajan ikkunasta "plot tools":n avulla, mutta selitteiden lisääminen on usein kätevämpää komentoriviltä. Muutamia peruskomentoja: x l a b e l ( ' x a k s e l i ' ) y l a b e l ( ' y a k s e l i ' ) t i t l e ( ' k u v a a j a n o t s i k k o ' ) a x i s ( [ x p i e n i n x s u u r i n y p i e n i n y s u u r i n ] ) Kuvan tallentaminen tiedostoon onnistuu käskyllä print, tiedostomuoto määritellään syntaksilla -dmuoto. Kuvan voi tallentaa myös valikosta file->save as tai file->export setup. Esimerkkejä komentorivi: %png p r i n t dpng kuva.png %v ä r i l l i n e n p o s t s c r i p t p r i n t dpsc k u v a. p s %pdf

5.1 Esimerkkiohjelma 2d kuvaaja ja sen tallennus. 9 p r i n t dpdf k u v a. p d f %e n c a p s u l a t e d p o s t s c r i p t p r i n t dpepsc k u v a. e p s 5.1 Esimerkkiohjelma 2d kuvaaja ja sen tallennus. %S i n i k ä y r ä n p i i r t o j a t a l l e n n u s png t i e d o s t o o n a =0:0. 0 5 : 2 * p i ; p l o t ( s i n ( a ), ' r ', ' l i n e w i d t h ', 2 ) ; l e g e n d ( ' s i n ( a ) ' ) %Merkinnät j a a k s e l i e n r a j a t x l a b e l ( ' x a k s e l i ' ) ; y l a b e l ( ' y a k s e l i ' ) a x i s ( [ 0 6. 3 1. 2 1. 2 ] ) %T a l l e n n u s png f o r m a a t i s s a p r i n t dpng s i n i. p n g 1 sin(a) 0.5 y akseli 0 0.5 1 0 1 2 3 4 5 6 x akseli

5.2 Esimerkkiohjelma 3d kuvaaja ja sen tallennus 10 5.2 Esimerkkiohjelma 3d kuvaaja ja sen tallennus %Luodaan m a t r i i s i t x j a y meshgrid f u n k t i o l l a [ x, y ]= meshgrid ( [ 1 2 : 1 / 2 : 1 2 ] ) ; %L a s k e t a a n z k o o r d i n a a t t i e r i f u n k t i o n a r v o i l l a z= s i n ( s q r t ( x. *x+ y. *y ) ). / s q r t ( x. *x+ y. *y ) ; %P i i r r e t ä ä n k u v a a j a mesh ( x, y, z ) ; %Merkinnät k u v a a j a a n t i t l e ( ' Mesh ' ) x l a b e l ( ' x a k s e l i ' ) y l a b e l ( ' y a k s e l i ' ) z l a b e l ( ' z a k s e l i ' ) %T a l l e n n e t a a n k u v a 3 d. e p s t i e d o s t o o n p r i n t depsc k u v a 3 d. e p s 1 0.8 0.6 z akseli 0.4 0.2 0 0.2 0.4 15 10 5 0 y akseli 5 10 15 15 5.3 Julkaisukelpoiset kuvat 10 5 0 x akseli Julkaisukelpoisten kuvien tuottaminen Matlabilla on helppoa. Kuvia pystyy muokkaamaan Plot toolsien avulla. Työkalut saa näkyviin klikkaamalla kuvan päällä näkyvistä kuvakkeista oikean puolimmaisinta Show plot tools. Voit helposti muokata kuvaajan värejä, fonttia, viivan paksuutta, lisätä selitteitä ja myös piirtää kuvaan mm. nuolia. Ohjelmasta löytyy myös erittäin kätevä toiminto, jolla kuvan saa tallennettua haluamaansa formaattiin oikeassa koossa ja sopivalla resoluutiolla. Se löytyy valikosta File->Export Setup.... Avautuvasta ikkunasta voit muut- 5 10 15

6 Tiedostojen käsittely ja hakemistot 11 taa haluamiasi ominaisuuksia ja lopuksi tallennettua kuvan valitsemalla Export. Julkaistavia kuvia muokatessa, ehkä tärkeintä on valita riittävä resoluutio eli ainakin 300, mutta mieluummin 600 dpi (löytyy rendering - välilehdeltä). Hyviä laadullisesti häviöttömiä formaatteja kuvien tallennukseen ovat eps, pdf, tiff ja png (toisin kuin esim. jpg ja gif). 6 Tiedostojen käsittely ja hakemistot Matlab tunnistaa dos- ja unix-komentoja hakemistoissa liikkumiseen ja tiedostojen käsittelyyn. Hakemistoissa liikkuminen tapahtuu komennolla cd hakemisto. cd d : \ d a t a cd c : \ Hakemistossa olevat tiedostot saadaan listattua ruudulle komennoilla l s d i r % L i s t a a k a i k k i t e k s t i t i e d o s t o t h a k e m i s t o s s a l s *. t x t d i r *. t x t t i e d o s t o t = d i r ( ' *. t x t ' ) ; Numeroarvoja sisältävä tiedosto saadaan ladattua ohjelmaan komennolla load tai komennolla dlmread Matlabin valikoista löytyy myös työkalu nimeltä Import wizard. Excel tiedostoja voi lukea komennolla xlsread. Esim. luetaan tiedoston "data.txt"sisältö muuttujaan "data". Puolipiste komennon viimeisenä kertoo ohjelmalle, että kaikkia numeroita ei tulosteta näytölle. Huomioi, että desimaalierottimena toimii ainoastaan piste, jos siis olet käyttänyt pilkkua ohjelma ei osaa lukea numeroita ja on syytä käyttää esim. notepadin korvaa toimintoa pilkkujen muuntamisessa pisteiksi. Ohjelmien omassa formaatissa olevien tiedostojen avaaminen on vielä helpompaa: %T oimii j o s t i e d o s t o s s a on p e l k k i ä n u m e r o i t a d a t a = l o a d ( ' d a t a. t x t ' ) ; %L uetaan d a t a ohjelmaan j ä t t ä e n ensimmäinen r i v i p o i s % ( 1, 0 ) j a k ä y t e t ä ä n e r o t t i m e n a s a r k a i n t a ) d a t a = dlmread ( ' d a t a. t x t ', ' \ t ', 1, 0 ) ; %Avataan ohjelman oma t i e d o s t o t i e d o s t o. m a t k s. % t a l l e n t a m i n e n a l l a

7 Omat ohjelmat 12 l o a d t i e d o s t o. m a t Tiedostojen tallentaminen Matlabin omassa binäärimuotoisessa *.mat formaatissa onnistuu komennolla save. Data on myös mahdollista tallentaa ASCII-muodossa komennolla dlmwrite ja excel muodossa komennolla xlswrite. Tässä muutamia esimerkkejä save käskyn käytöstä: %T a l l e n t a a k a i k k i t y ö t i l a n m u u t t u j a t t i e d o s t o o n % t i e d o s t o. m a t save t i e d o s t o. m a t %T a l l e n t a a t y ö t i l a s s a o l e v a t m u u t t u j a t " m u u t t u j a 1 " j a " % m u u t t u j a 2 " t i e d o s t o o n t i e d o s t o. m a t m u u t t u j a 1 =1; m u u t t u j a 2 =2; save t i e d o s t o. m a t m u u t t u j a 1 m u u t t u j a 2 %T a l l e n n e t a a n M a t l a b i n 6 v e r s i o n k a n s s a y h t e e n s o p i v a % t i e d o s t o. T a r v i t a a n, j o s h a l u t a a n k ä y t t ä ä m a t l a b i n %vanhaa v e r s i o t a t a i e s i m. Octave j a R o h j e l m i a % t i e d o s t o n avaamiseen save v6 t i e d o s t o. m a t 7 Omat ohjelmat Käyttäjän omia ohjelmia Matlabissa ovat m-filet eli *.m päätteiset tiedostot. Niiden avulla pystyään automatisoimaan tiedostojen käsittely tai tekemään esimerkiksi simulointiohjelma. M-filejä on kahta tyyppiä: itsenäisesti komentoriviltä ajettavia ohjelmia eli skriptejä, joilla voi automatisoida tehtäviä ja funktioita, joita voi kutsua komentoriviltä (tai toisista ohjelmista) ohjelman omien funktioiden tapaan, kuten esim. mean - funktiota. Matlabissa on oma editori ja uusi M-file saadaan tehty valitsemalla "File>new>M-file". 7.1 Skriptit Skripti on sarja komentoja, jotka suoritetaan peräkkäin. Ohjelma voi sisältää myös ehtolauseita, silmukoita ja kutsuja toisiin ohjelmiin. Alla yksinkertainen esimerkki. Kaikki skriptissä määritellyt muuttujat jäävät muistiin ohjelman työtilaan. %Tämän e s i m e r k i n t a r k o i t u k s e n a on n ä y t t ä ä miten M f i l e % t o i m i i. E nsin m ä ä r i t e l l ä ä n m u u t t u j a t j a s i t t e n % s u o r i t e t a a n l a s k u t o i m i t u s j a t a l l e n n e t a a n t u l o s. % K i r j o i t a t a i k o p i o i tämä t e k s t i s u o r a a n e d i t o r i i n j a

7.2 Funktiot 13 % t a l l e n n a e s i m. n i m e l l ä koe.m, j o h o n k i n hakemistoon %missä t i e d ä t sen o l e v a n. %T y h j e n n e t ä ä n t y ö t i l a, e t t e i v ä t a i k a i s e m m a t m u u t t u j a t % s o t k e ohjelmaa c l e a r ; %x=100 x1 v e k t o r i, j o s s a on s a t u n n a i s l u k u j a x= rand ( 1 0 0, 1 ) ; %l a s k e t a a n x : n k e s k i a r v o k e s k i a r v o =mean ( x ) %l a s k e t a a n x : n k e s k i h a j o n t a k e s k i h a j o n t a = s t d ( x ) %P i i r r e t ä ä n x : s t ä k u v a a j a p l o t ( x ) x l a b e l ( ' x a k s e l i ' ) y l a b e l ( ' y a k s e l i ' ) %T a l l e n n e t a a n t u l o s save t u l o s. m a t %Tämän j ä l k e e n a j a t i e d o s t o s i i r t y m ä l l ä k y s e i s e e n %hakemistoon j a k i r j o i t a m f i l e n nimi e l i " koe.m " > %ENTER. 7.2 Funktiot Funktio luodaan samalla tavalla, kuin itsenäisesti ajettava ohjelma, mutta sen alkuun kirjoitetaan määrittely, että kyseessä on funktio. Funktiota kutsutaan myös komentoriviltä kuten skriptiä, mutta funktioon annetaan haluttu määrä argumentteja (dataa, kertoimia tms.) ja myös kerrotaan mitä muuttujia funktion halutaan palauttavan. Erotuksena skriptiin funktio toimii omassa työtilassaan eli funktiossa määritellyt muuttujat eivät jää ohjelman muistiin. Funktiot ovat käteviä usein suoritettavien laskujen automatisoinnissa. Myös pitkän skriptin pystyy lyhentämään tekemällä sen osista funktioita (aliohjelmia), joita kutsuu pääohjelmasta. Pystyt kutsumaan tekemääsi funktiota mistä tahansa hakemistosta, jos sijoitat sen ohjelman polussa olevaan hakemistoon (tai lisäät oman hakemistosi polkulistaan (search path)). Soveltuvat hakemistot saat listattua komennolla path ja oman hakemiston saat lisättyä polkuun komennella addpath tai valikosta File->Set Path. Ohjelmat eivät tallennna addpath-komennolla lisäämääsi hakemistoa polkuun vaan se pysyy siellä ainoastaan kunnes ohjelma sammutetaan, tästä ongelmasta pääsee lisäämällä komennon ohjelman käynnistyessään ajamaan tiedostoon (matlabrc.m). Samaiseen käynnistystiedostoon voi lisätä muitakin haluamiaan komentoja esim. cd omahakemisto; clc

8 Perusohjelmointi 14 %Tämä on M a t l a b i n e s i m e r k k i f u n k t i o " k l u v u t ", j o k a l a s k e e % s i i h e n %s y ö t e t y n d a t a n k e s k i a r v o n, hajonna n j a k e s k i a r v o n %k e s k i v i r h e e n. T a l l e n n a t i e d o s t o a i n a s a m a l l a n i m e l l ä, %mikä on %f u n k t i o n nimi e l i n y t k l u v u t. m Kutsu k o m e n t o r i v i l t ä %muotoa %[ k e s k i a r v o, k e s k i h a j o n t a, k e s k i v i r h e ]= k l u v u t ( arvo ) HUOMAA %, e t t ä %" k e s k i a r v o, k e s k i h a j o n t a, k e s k i v i r h e j a l u v u t " o v a t % m u u t t u j a n nimiä %j a n i i d e n t i l a l l a v o i d a a n k ä y t t ä ä h a l u t t u j a n i m i ä. % M u u t t u j a s s a " arvo " %on k ä s i t e l t ä v ä data, " k e s k i a r v o " k e s k i h a j o n t a j a % k e s k i v i r h e " o v a t %f u n k t i o n t u l o k s i a. f u n c t i o n [ k e s k i a r v o, k e s k i h a j o n t a, k e s k i v i r h e ]= k l u v u t ( arvo ) k e s k i a r v o =mean ( arvo ) ; k e s k i h a j o n t a = s t d ( arvo ) ; %L a s k e t a a n d a t a s s a o l e v i e n a r v o j e n määrä, e l i n n= l e n g t h ( arvo ) ; %Keskiarvon k e s k i v i r h e on keskihajonta n k e s k i v i r h e = k e s k i h a j o n t a / s q r t ( n ) ; Kun olet tehnyt funktion siirry siihen hakemistoon mihin se on tallennettu ja koita, että funktio toimii: Luodaan funktiolle annettavat arvot, 1000 satunnaislukua d a t a = rand ( 1 0 0 0, 1 ) ; %K u t s u t a a n äsken t e h t y ä f u n k t i o t a k l u v u t k o m e n t o r i v i l t ä % j a t a l l e n n e t a a n t u l o k s e t m u u t t u j i i n x, y j a z [ x, y, z ]= k l u v u t ( d a t a ) 8 Perusohjelmointi 8.1 Silmukka eli loop Yksi lähes joka ohjelmassa tarvittava komponentti on silmukka eli loop. Silmukan sisällä olevat toiminnot toistetaan jokaisella ajokerralla. Silmukkaa tarvitaan esimerkiksi simuloinnissa tai jos halutaan suorittaa lukea monta tiedostoa ohjelmaan ja analysoida ne samalla tavalla. Silmukka ajetaan niin monta kertaa,

8.2 Ehtolauseet: if, else ja elseif 15 kunnes annettu pysäytysehto täyttyy. Yleensä toiminta saadaan suoritettua käyttämällä for - looppia, joka ajaa komennot tietyn määrän kertoja. Lue lisää matlabin ohjeesta. %E s i m e r k k i a j e t a a n silmukka 10 k e r t a a, m u u t t u j a k e r t a s a a % j o k a i s e l l a a j o k e r r a l l a uuden a r v o n. Ajamalla ohjelman % s a a t k ä s i t y k s e n mitä t a p a h t u u l o o p i s s a.. %A l o i t e t a a n silmukka f o r k e r t a =1:10 k e r t a %Rakennetaan l o o p i l l a v e k t o r i, j o k a s a a a i n a arvon k e r t a %*2 v e k t o r i ( k e r t a ) = k e r t a *2 %L o p e t e t a a n silmukka end 8.2 Ehtolauseet: if, else ja elseif Silmukoiden lisäksi ohjelmissa tarvitaan usein ehtolauseita, joilla kontrolloidaan tiettyjen käskyjen suorittamista. Ehtolauseet toteutetaan komennoilla if, else ja elseif. if ja elseif komennot päätetään komennolla end. Yksinkertaisia esimerkkejä: %b=3 j o s a >4 i f a >4 b=3 end %b=3 j o s a >3 j a b=6 j o s a <2, muussa t a p a u k s e s s a b=0 i f a >3 b=3 e l s e i f a <2 b=6 e l s e b=0 end end

9 Tehtävien automatisointi eli Batch-mode 16 9 Tehtävien automatisointi eli Batch-mode Usein mittauksissa kertyy suuri määrä samanlaisia tai lähes samanlaisia tiedostoja joiden käsittely halutaan tehdä mahdollisimman automaattisesti. Tämä tapahtuu tekemällä oma peräkkäisistä komennoista koostuva ohjelma, jolla voi vaikkapa laskea kaikkien hakemistossa olevien tiedostojen keskiarvon. Esimerkkinä käytän lehmän jalkapainomittauksesta saatua dataa, jonka voi ladata internetistä http://files.mpastell.com/hdata.zip. Myös ao. koodi löytyy samasta zipistä nimellä hdata.m. Data on saatu mittaamalla lehmän jokaisen jalan painoa erikseen lypsyn aikana ja tiedosto koostuu neljästä sarakkeesta, joista jokaisessa on yhden jalan paino. Esimerkissä lasketaan jokaisen jalan keskipaino ja keskihajonta lehmän kokonaispaino, ja tallennetaan jokaisesta tiedostosta kuvaaja erilliseen hakemistoon. %D a t a s s a on o t s i k k o r i v i j a i t s e m i t t a u s t i e t o 7 : s s ä % s a r a k k e e s s a. H a r j o i t u k s e s s a k ä y t e t ä ä n s a r a k k e i t a 2 5, % j o i s s a on lehmän j o k a i s e n j a l a n p a i n o l y p s y n a i k a n a. c l e a r ; c l c ; %L uetaan k a i k k i hakemiston t e k s t i t i e d o s t o t m u u t t u j a a n ` ` % t i e d o s t o t ` ` t i e d o s t o t = d i r ( ' *. t x t ' ) ; %L a s k e t a a n t i e d o s t o j e n määrä j a l u o d a a n h a k e m i s t o k u v i l l e maara = l e n g t h ( t i e d o s t o t ) ; mkdir ( ' k u v a t ' ) %A j e t a a n silmukka, j o s s a k ä s i t e l l ä ä n k a i k k i h a k e m i s t o s s a % o l e v a t t i e d o s t o t f o r k e r t a =1: maara %L uetaan silmukan a j o k e r r a n o s o i t t a m a t i e d o s t o d a t a = dlmread ( t i e d o s t o t ( k e r t a ).name, ' \ t ', 1, 0 ) ; %V a l i t a a n k i i n n o s t u k s e n k o h t e e n a o l e v a s a r a k k e e t 2 5 d a t a = d a t a ( :, 2 : 5 ) ; %L a s k e t a a n lehmän k o k o n a i s p a i n o j a l k a p a i n o j e n summana d a t a ( :, 5 ) =sum ( data, 2 ) ; %L a s k e t a a n t i e d o s t o n j o k a i s e n s a r a k k e e n k e s k i a r v o. %Lopuksi m u u t t u j a s s a on k a i k k i e n t i e d o s t o j e n % k e s k i a r v o t, j o k a i n e n omalla r i v i l l ä ä n. k e s k i a r v o ( k e r t a, 1 : 5 ) =mean ( d a t a ) ; %L a s k e t a a n k e s k i h a j o n t a k e s k i h a j o n t a ( k e r t a, 1 : 5 ) = s t d ( d a t a ) ; %P i i r r e t ä ä n k u v a a j a j a l i s ä t ä ä n s e l i t t e e t p l o t ( d a t a ) x l a b e l ( ' measurement p o i n t ' )

10 Sekalaisia vinkkejä 17 y l a b e l ( ' weight ( kg ) ' ) %T u l o s t e t a a n kuva png t i e d o s t o o n. p r i n t ( [ ' k u v a t / ' num2str ( k e r t a ) '. p n g ' ], ' dpng ' ) end 10 Sekalaisia vinkkejä Tämän otsikon alla on muutamia esimerkkiohjelmia ja mielestäni hyödyllisiä komentoja.tämän osion esimerkkejä on kommentoitu vähemmän kuin alkuosaa, tarkoituksena on myös että niitä soveltaessa pitää ymmärtää mitä tekee. 10.1 Hyödyllisiä komentoja 1. find komennolla voidaan etsiä vektorista tai matriisista kaikki tietyn ehdon täyttävät arvot. Mielestäni hyödyllisin komento, säästää valtavasti laskentaaikaa jos käytetään loopin sijaan (Ks. seuraava kappale). Esim. haetaan muuttujasta data, kaikki yli 3*keskihajonta keskiarvosta poikkeavat arvot ja poistetaan ne. d a t a =[2 3 4 3 3 2 4 4 2 3 3 3 3 4 4 2 2 5 0 ] ; sd = s t d ( d a t a ) ; ka=mean ( d a t a ) ; p o i s = f i n d ( data >ka +3* sd data <ka 3*sd ) ; d a t a ( p o i s ) = [ ] ; 2. diff ( data ) käsky laskee vektorin data peräkkäisten elementtien välisen erotuksen. Esimerkki seuraavassa kappaleessa. 3. tic ja toc komennot mittaavat komentojen välissä kulunutta aikaa. Lisäämällä komennot ohjelmaan alkuun ja loppuun saadaan selville ohjelman suorittamisessa kulunut aika. 4. pause(1) lisää ohjelmaan 1 sekunnin mittaisen tauon. 5. sortrows ( data,[1 2]) järjestää matriisin rivit ensiin sarakkeen 1 mukaan ja sitten sarakkeen 2 mukaan. 6. vektori (10) =[] poistaa vektorin 10:n elementin 7. [a b] yhdistää vektorit tai matriisit a ja b.

10.2 Piikkien etsintä datasta 18 10.2 Piikkien etsintä datasta Seuraavilla esimerkeillä lasketaan kuinka monta kertaa data ylittää tietyn rajaarvon. Samalla tavalla laskea minkä tahansa piikkien määrää datassa. Laitoksella samantyyppistä laskentaa on hyödynnetty mm. lehmän potkujen määrän laskemiseksi lypsyn aikana jalkapainodatasta 1, 2 ja lehmän hengitystaajuuden laskennassa lypsyn aikana. 3 %L a s k e t a a n kuinka monta k e r t a a k u v a a j a y l i t t ä ä arvon 0. 2 c l e a r ; c l c ; d a t a = s i n ( 0 : 0. 1 : 5 0 ) ; %Raja arvon y l i t t a v ä t p i s t e e t p y l i = f i n d ( data >0. 2 ) ; %K e r r a t j o l l o i n r a j a arvo y l i t e t ä ä n y l i = f i n d ( d i f f ( p y l i ) >1) ; k e r r a t = l e n g t h ( y l i ) ; %Ensimmäinen k e r t a j ä ä l a s k e m a t t a j o s a l k u a r v o <0. 2 ; i f d a t a ( 1 ) <0. 2 k e r r a t = k e r r a t +1; end p l o t ( d a t a ) t i t l e ( [ ' Ohjelma l a s k i ' num2str ( k e r r a t ) ' y l i t y s t ä. ' ] ) Rajan ylitykset voi laskea myös hyödyntämällä pelkästään find käskyä. Ohjelma on myös helpohkosti muokattavissa huippujen haku ohjelmaksi: %L a s k e t a a n kuinka monta k e r t a a k u v a a j a y l i t t ä ä arvon 0. 2 c l e a r ; c l c ; d a t a = s i n ( 0 : 0. 1 : 5 0 ) ; d a t a 2 ( 2 : l e n g t h ( d a t a ) +1) = d a t a ; d a t a ( l e n g t h ( d a t a ) +1) =NaN ; y l i = f i n d ( data >0. 2 & d a t a 2 0. 2 ) ; k e r r a t = l e n g t h ( y l i ) ; y ( 1 : k e r r a t ) =0. 2 ; p l o t ( d a t a ) ; hold on p l o t ( y l i, y, ' * r ' ) ; t i t l e ( ' Y l i t y s = punainen * ' )

10.3 Tekstitiedostojen muunto *.mat formaattiin 19 1 Ylitys = punainen * 0.5 0 0.5 1 0 100 200 300 400 500 10.3 Tekstitiedostojen muunto *.mat formaattiin Joskus on hyödyllistä muuntaa ASCII - muotoista (txt) dataa Matlabin omaan dataformaattiin. Tähän on 2 syytä: tiedostot vievät paljon vähemmän tilaa ja aukeavat ohjelmissa suunnattoman paljon nopeammin. Alla oleva ohjelma muuntaa kaikki hakemistossa olevat *.txt tiedostot *.mat tiedostoiksi säilyttäen tiedostonimen muuten ennallaan. Uuteen *.mat tiedostoon tallennnetaan tiedostossa oleva data muuttujaan data ja tiedoston tallennuspäivämäärä muuttujaan date. c l c ; c l e a r ; %L i s t a t a a n hakemiston *. t x t t i e d o s t o t s t r u k t u u r i i n f i l e s f i l e s = d i r ( ' *. t x t ' ) ; tlkm = s i z e ( f i l e s, 1 ) f o r end i =1: tlkm %K ä y t e t ä ä n dlmread komentoa, j o s d a t a s s a on % o t s i k k o r i v i, l o a d komentoa j o s e i o l e ( k ä y t t ä j ä % v a l i t s e e ). %d a t a =dlmread ( f i l e s ( i ).name, ' \ t ', 1, 0 ) ; d a t a = l o a d ( f i l e s ( i ).name ) ; d a t e = f i l e s ( i ). d a t e ; nimi = s t r r e p ( f i l e s ( i ).name, ' t x t ', ' mat ' ) ; save ( nimi, ' d a t a ', ' d a t e ' )

10.4 Matlabin dialogit 20 10.4 Matlabin dialogit Matlabin ohjelmiin voi lisätä myös mm. graafisia dialogeja, joilla voidaan esimerkiksi seurata silmukan edistymistä (tämä on joskus mukava ominaisuus hieman enemmän aikaa vievässä ohjelmassa) tai valita avattava/tallennettava tiedosto. Lisätietoa löytyy Matlabin helpistä kohdasta Predefined Dialog Boxes. Esimerkkiohjelma luo silmukan edistymistä seuraavaan näytön. %E s i m e r k k i ' w a i t b a r ' k ä s k y s t ä. h= w a i t b a r ( 0, ' O d o t a... ' ) ; f o r i =1:100 pause (0. 1 ) w a i t b a r ( 1 / 1 0 0 ) end c l o s e ( h ) 11 Signaalin käsittely 11.1 FFT - taajuuden etsintä signaalista FFT (Fast Fourier Transform) on laskentamenetelmä, jolla voidaan laskea signaalissa esiintyvien taajuuksien voimakkuus. Alla esimerkki FFT:n laskemisesta Matlabilla. c l e a r ; c l c ; %FFT : l l ä v o i d a a n l a s k e a e r i t a a j u u k s i e n voimakkuus % s i g n a a l i s s a. Tämä on e s i m e r k k i FFT : n k ä y t ö s t ä % M a t l a b i s s a. D a t a p i s t e e t 512 kpl, m i t t a u s t a a j u u s 100 hz d a t a = ( 0 : 0. 1 : 5 1. 1 ) ; %Luodaan h ä i r i ö t ä d a t a a n n o i s e = randn ( 1, 5 1 2 ) ; %L i s ä t ä ä n h ä i r i ö s i n ( d a t a a n ) h d a t a = s i n ( d a t a ) + n o i s e / 5 ; p l o t ( data, h d a t a ) %Merkinnät j a a k s e l i e n r a j a t t i t l e ( ' Data ' ) x l a b e l ( ' Aika ' ) y l a b e l ( ' Voimakkuus ' ) %L a s k e t a a n DFT h ä i r i ö l l i s e s t ä d a t a s t a f f t f u n k t i o l l a Y = f f t ( hdata, 5 1 2 ) ;

12 Neuroverkot 21 %L a s k e t a a n power s p e c t r a l d e n s i t y e l i e r i t a a j u u k s i e n %voimakkuus s i g n a a l i s s a Pyy = Y.* c o n j (Y) / 512; %A i n o a s t a a n e n s i m m ä i s i l l ä 257 p i s t e e l l ä on m e r k i t y s t ä. % L a s k e t a a n t a a j u u s v e k t o r i e l i t a a j u u s / f f t : n p i s t e i d e n %määrä f = 1 0 0 * ( 0 : 2 5 6 ) / 5 1 2 ; %P l o t a t a a n f f t : n t u l o s u u t e e n kuvaan f i g u r e p l o t ( f, Pyy ( 1 : 2 5 7 ) ) x l a b e l ( ' T a a j u u s ( hz ) ' ) y l a b e l ( ' Voimakkuus ( db ) ' ) t i t l e ( ' FFT : n t u l o s ' ) Data FFT:n tulos Voimakkuus 1 0 1 0 20 40 60 Aika Voimakkuus (db) 100 50 0 0 10 20 30 40 50 Taajuus (hz) 12 Neuroverkot Tämän ja seuraavan kappaleen tarkoituksena on osoittaa, että hienojen termien Neuroverkko ja Sumea logiikka toteutus onnistuu ilman mitään toolboxeja ja melko yksinkertaisilla laskutoimituksilla. Mallien toimintaan perehtyminen kirjallisuuden perusteella voi olla aluksi vaikeaa, koska niissä käytetään paljon omaa terminologiaa ja sinällänsä helpoille laskutoimituksille on annettu hienot nimet. Toivottavasti nämä yksinkertaiset esimerkit hieman selventävät asiaa. 12.1 Probabilistic Neural Network Probabilistic Neural Network (PNN) on neuroverkkomalli, joka luokittelee uusia vektoreita opetusdatan perusteella. Malli säilyttää koko opetusdatan toisin kuin monet muut samaan tarkoitukseen kehitetyt NV-mallit. Esimerkki mallin toiminnasta:

12.1 Probabilistic Neural Network 22 %PNN k a h d e l l a l u o k i t u k s e l l a t ä s s ä e s i m e r k i s s ä % o p e t u s d a t a n a o v a t %k e k s i t y t a j a b, mutta ne v o i d a a n h e l p o s t i k o r v a t a % o i k e a l l a %m i t t a u s d a t a l l a. O p e t u s d a t a n r i v e i l l ä on e s i m e r k i s s ä v a i n % 2 arvoa, %koska se on h e l p o i n t a e s i t t ä ä g r a a f i s e s t i. Arvoja v o i % k u i t e n k i n %l i s ä t ä l ä h e s r a j a t t a. M a l l i n t o i m i n t a a s ä ä d e t ä ä n % m u u t t a m a l l a %s p r e a d i n =s a r v o a c l e a r ; c l c ; %O p e t u s d a t a a j a b=pnn: n 2 l u o k k a a a =[1 2 ; 2 1 2 ; 5 6 ; 7 8] b =[1 7 ; 22 4 ; 5 2 ; 7 10] %s on smoothing p a r a m e t e r ( s p r e a d ) s =0. 2 ; %c on l u o k i l t e l t a v a v e k t o r i c =[6 10] %L a s k e t a a n e t ä i s y y d e t molempien l u o k k i e n j o k a i s e e n %v e k t o r i i n (= r i v i i n ) f o r i =1: l e n g t h ( a ) ; e t a ( i ) = s q r t ( sum ( ( a ( i, : ) c ). ^ 2) ) e t b ( i ) = s q r t ( sum ( ( b ( i, : ) c ). ^ 2) ) end %R a d i a l b a s i s a c t i v a t i o n f u n c t i o n s a a arvon 1, kun % e t ä i s y y s on 0 j a muulloin <1. A k t i v o i n t i f u n k t i o n " % l e v e y s " r i i p p u u s : n a r v o s t a. r b a =exp ( s * e t a. * e t a ) rbb=exp ( s * e t b. * e t b ) %L a s k e t a a n k a i k k i e n r a d i a l b a s i s f u n k t i o i d e n summa %molemmille l u o k i l l e f a x =sum ( r b a ) fbx=sum ( rbb ) %P l o t a t a a n v e k t o r i t v a l i t a a n isompi luokka j a n ä y t e t ä ä n %se k u v a s s a p l o t ( a ( :, 1 ), a ( :, 2 ), ' s q u a r e b l a c k ' ) hold on p l o t ( b ( :, 1 ), b ( :, 2 ), ' +b ' ) p l o t ( c ( :, 1 ), c ( :, 2 ), ' * r ' ) l e g e n d ( ' luokka a ', ' luokka b ', ' u u s i ' )

13 Sumea Logiikka 23 %L u o k i t u k s e n v a l i n t a i f fax > fbx t i t l e ( ' V e k t o r i kuuluu luokkaan A ' ) e l s e t i t l e ( ' V e k t o r i kuuluu luokkaan B ' ) end hold o f f 14 12 10 Vektori kuuluu luokkaan B luokka a luokka b uusi 8 6 4 2 0 0 5 10 15 20 25 13 Sumea Logiikka Tämä on tarkoitettu esimerkiksi laskennasta sumean logiikan idean tunteville. Ensin tehdään gaussinen jäsenyysfunktio gausf.m ja sitten lasketaan yksinkertainen esimerkki sumeasta mallista. Mallissa on kolme jäsenyysfunktiota ja kaikilla jäsenyysfunktioilla on mallissa yhtä suuri paino. Gaussinen jäsenyysfunktio:f(x) = e (x c) 2σ 2 %J ä s e n y y s f u n k t i o gausf.m, c=jakauman k e s k i p i s t e, s= % h a j o n t a e l i sigma, x on u u s i p i s t e f u n c t i o n mf = g a u s f ( x, c, s ) mf=exp ( (x c ). ^ 2 / ( 2 * s ^ 2) ) ; Seuraavaksi malli: %Luodaan sumea m a l l i, j o s s a on kolme g a u s s i s t a % j ä s e n y y s f u n k t i o t a. c= f u n k t i o n k e s k i p i s t e j a s= h a j o n t a

13 Sumea Logiikka 24 % j a a= t u l o s, kun kuuluu f u n k t i o o n j ä s e n y y s a s t e e l l a 1. %Lopuksi l a s k e t a a n p i s t e e n p arvo m a l l i l l a c l c ; c l e a r ; %M ä ä r i t e l l ä ä n j ä s e n y y s f u n k t i o t c1 =4; s1 =2; a1 =1; c2 =10; s2 =2. 6 ; a2 =2; c3 =15; s3 =2; a3 =3; %P i i r r e t ä ä n k u v a a j a t p i s t e e t = 8:0. 1 : 8 ; mf1= g a u s f ( c1+ p i s t e e t, c1, s1 ) ; mf2= g a u s f ( c2+ p i s t e e t, c2, s2 ) ; mf3= g a u s f ( c3+ p i s t e e t, c3, s3 ) ; p l o t ( p i s t e e t +c1, mf1, ' b ' ) ; hold on p l o t ( p i s t e e t +c2, mf2, ' r ' ) ; p l o t ( p i s t e e t +c3, mf3, ' g ' ) ; %L a s k e t a a n p i s t e e n p arvo j a p i i r r e t ä ä n j ä s e n y y s a s t e e t %kuvaan p =8; j 1 = g a u s f ( p, c1, s1 ) ; j 2 = g a u s f ( p, c2, s2 ) ; j 3 = g a u s f ( p, c3, s3 ) ; p l o t ( p, j1, ' *b ' ) p l o t ( p, j2, ' xr ' ) p l o t ( p, j3, ' og ' ) t u l o s = j 1 * a1+ j 2 * a2+ j 3 * a3 ; hold o f f t i t l e ( [ ' T ulos = ' num2str ( t u l o s ) ] ) 1 0.8 0.6 0.4 0.2 Tulos= 1.6297 0 5 0 5 10 15 20 25

VIITTEET 25 Viitteet [1] Pastell, M., H. Takko, H. Grohn, M. Hautala, V. Poikalainen, J. Praks, I. Veermae, M. Kujala and J. Ahokas. 2006. Assessing cows welfare: Weighing the cow in a milking robot. Biosystems Engineering. 93:81-87. [2] Pastell, M., H. Takko, H. Grohn, M. Hautala, V. Poikalainen, J. Praks, I. Veermae, M. Kujala and J. Ahokas. 2006. Assessing cows welfare: Weighing the cow in a milking robot. Biosystems Engineering. 93:81-87. [3] Pastell, M., A. M. Aisla, M. Hautala, J. Ahokas, V. Poikalainen, J. Praks and I. Veermae. 2006. Automatic cow health measurement system in a milking robot. in ASABE annual international meeting, Portland, USA.

Hakemisto array, 6 clear, 5 desimaalierotin, 11 dialogi, 20 dlmread, 11 dlmwrite, 12 ehtolause, 15 else,elseif, 15 excel, 11 export setup, 8, 10 fft, 20 find, 17 for, 15 funktio, 12, 13 argumentti, 13 muuttuja, 5 plot tools, 8, 10 save, 12 silmukka, 14 skripti, 12 std, 7 toolbox, 4 Unix tunnus, 5 vektori, 6 who, 5 xlsread, 11 xlswrite, 12 if, 15 import wizard, 11 kalibrointikerroin, 7 komentorivi, 5 kuvaaja, 8 load, 11 m-file, 12 mat formaatti, 19 mat tiedostot, 12 matriisi, 6 mean, 7