1. gyakorlatusers.nik.uni-obuda.hu/takacsm/fuzzy/fuzzy_2012tavasz/... · 2012-03-16 · enter...

40
1. gyakorlat I. Ismerkedjünk meg a Matlab programcsomaggal! A MATLAB interaktív programcsomag, amely tudományos, mérnöki és matematikai feladatok megoldéséra egyaránt jól alkalmazható. Az alapcsomag továbbiakkal (Toolbox- okkal) kiegészítve számos alkalmazási területen számítások elősegítésére készült. Gyártója a The MathWorks Inc. (USA, www.mathworks.com ). Nevét a MATrix LABoratory szóösszetétel rövidítéséből kapta, ami utal arra, hogy a legtöbb műveletet, feladatot mátrix formájában rögzített adatokkal végzi. Eredetileg FORTRAN-ban készült, később teljes egészében átíródott C nyelvre és bővíthető a modern programozási környezetben megírt modulokkal, azaz "nyitott". 1. feladat Nyissuk meg a MATLAB csomagot! Elemezzük az ablakokat! (menüsor, command window, command history, workspace) A MATLAB alapcsomagnak is van programozási nyelve, amely a matematikai műveletek, függvények, relációk értelmezéséből adódik. Parancsvezérelt üzemmódban, vagyis interpreter-ként dolgozik. A parancsokat áttekinthetjük különböző csoportosítások szerint a megnyitott MATLAB csomag Help menüjében. 2. feladat Nyissuk meg a Help menüt! Tanulmányozzuk át a szerkezetét! Írjuk be a paracsablakba: help plot Megtudhatunk mindent a rajzolásról. A csomag további két- és háromdimenziós grafikus megjelenítési módokat biztosít a felhasználó számára, a képek pedig kezelhetően adhatók át más Windows környezetben futó alkalmazások számára. Figyelmeztető hibajelzéseket küld a csomag, és segít a Help menü, ha a parancsokban vagy a számításokban szintaktikai vagy felismerhető szemantikai összeférhetetlenségek vagy hibák vannak. Megjegyzés: Új függvények beépítésére M-file-okat (alapcsomag/alapmenü/file/new/m file) vagy MEX- file-okat használunk. Az M-file-ok * .m kiterjesztésű szövegfájlok, amelyek MATLAB parancsokat vagy egyéb, a felhasználó által definiált függvényeket tartalmazhatnak. A Toolbox-ok ilyen komplex feladat-specifikus kiegészítő programok. A MEX-file-ok Fortran- vagy C-nyelvű, MATLAB parancsra lefordított * .exe file-ok, amelyek a továbbiakban úgy viselkednek, mint a MATLAB gyárilag megírt rutinjai. Szőmunkra két Toolbox lesz fontos: a

Upload: others

Post on 16-Jul-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 1. gyakorlatusers.nik.uni-obuda.hu/takacsm/fuzzy/fuzzy_2012tavasz/... · 2012-03-16 · ENTER billentyű lenyomásával érvényesítünk, az előző parancs, parancsok visszahívhatók

1. gyakorlat

I. Ismerkedjünk meg a Matlab programcsomaggal!

A MATLAB interaktív programcsomag, amely tudományos, mérnöki és matematikai feladatok megoldéséra egyaránt jól alkalmazható. Az alapcsomag továbbiakkal (Toolbox-okkal) kiegészítve számos alkalmazási területen számítások elősegítésére készült. Gyártója a The MathWorks Inc. (USA, www.mathworks.com). Nevét a MATrix LABoratory szóösszetétel rövidítéséből kapta, ami utal arra, hogy a legtöbb műveletet, feladatot mátrix formájában rögzített adatokkal végzi. Eredetileg FORTRAN-ban készült, később teljes egészében átíródott C nyelvre és bővíthető a modern programozási környezetben megírt modulokkal, azaz "nyitott".

1. feladat

Nyissuk meg a MATLAB csomagot! Elemezzük az ablakokat! (menüsor, command window, command history, workspace)

A MATLAB alapcsomagnak is van programozási nyelve, amely a matematikai műveletek, függvények, relációk értelmezéséből adódik. Parancsvezérelt üzemmódban, vagyis interpreter-ként dolgozik. A parancsokat áttekinthetjük különböző csoportosítások szerint a megnyitott MATLAB csomag Help menüjében.

2. feladat

Nyissuk meg a Help menüt! Tanulmányozzuk át a szerkezetét!

Írjuk be a paracsablakba: help plot

Megtudhatunk mindent a rajzolásról.

A csomag további két- és háromdimenziós grafikus megjelenítési módokat biztosít a felhasználó számára, a képek pedig kezelhetően adhatók át más Windows környezetben futó alkalmazások számára.

Figyelmeztető hibajelzéseket küld a csomag, és segít a Help menü, ha a parancsokban vagy a számításokban szintaktikai vagy felismerhető szemantikai összeférhetetlenségek vagy hibák vannak.

Megjegyzés:

Új függvények beépítésére M-file-okat (alapcsomag/alapmenü/file/new/m file) vagy MEX-file-okat használunk. Az M-file-ok *.m kiterjesztésű szövegfájlok, amelyek MATLAB parancsokat vagy egyéb, a felhasználó által definiált függvényeket tartalmazhatnak. A Toolbox-ok ilyen komplex feladat-specifikus kiegészítő programok. A MEX-file-ok Fortran- vagy C-nyelvű, MATLAB parancsra lefordított *.exe file-ok, amelyek a továbbiakban úgy viselkednek, mint a MATLAB gyárilag megírt rutinjai. Szőmunkra két Toolbox lesz fontos: a

Page 2: 1. gyakorlatusers.nik.uni-obuda.hu/takacsm/fuzzy/fuzzy_2012tavasz/... · 2012-03-16 · ENTER billentyű lenyomásával érvényesítünk, az előző parancs, parancsok visszahívhatók

Fuzzy Toolbox (meghívása a paracsablakból: fuzzy) illetve a SIMULINK (meghívása a parancsablakból: simulink).

A MATLAB programcsomag hazai forgalmazója a Gamax kft. (http://matlab.gamax.hu), honlapjukon ingyenes "webinárok", azaz webes szemináriumok is elérhetőek!

II. Ismerkedjünk meg a Matlab változókkal

A MATLAB elsősorban mátrix műveletekre specializált szoftver. Az adatokat mátrix formában kezeli, ami részben előny, másrészt egyszerű változók esetében zavarú lehet. Adjunk meg ezért most néhány változót, és azonnal ellenőrizzük a dimenziójukat!

Megjegyzés: a MATLAB case sensitive!

A változókat egyszerű megnevezéssel és/vagy érték-hozzárendeléssel adjuk meg. Az így meghatározott változók (és a valós hozzárendelt értékük) a továbbiakban bármilyen matematikai összefüggésben szerepelhetnek. Az egyszer meghatározott (nevesített) változók a munkafolyamat végéig (a "quit", az "exit" vagy a "clear" utasításokig) rezidensen maradnak a MATLAB munkaterületen, tehát bármikor előhívhatók a munkafelületen (workspace, ami menthető, és vele mentődnek a változóértékek is, ha szükség van rá!).

A munkafolyamat során bármikor új változók is meghatározhatunk, a hozzájuk tartozó értékeket (mátrixtömböket) pedig menthetjük lemezre ("save" parancs) vagy előhívhatjuk azokat( a "load" parancs segítségével). Adott MATLAB utasításokat, parancsokat mindig az ENTER billentyű lenyomásával érvényesítünk, az előző parancs, parancsok visszahívhatók a ↑ gombbal.

Hosszú, összetett munkafolyamat vagy kiterjedt számítások során sok változónév összegyűlhet. A MATLAB listát vezet a változókról, amelyet a "who" paranccsal lehet lekérdezni. A változók dimenzióját a size(változónév) paranccsal tudjuk ellenőrizni. Fontos, hogy következetes, logikus jelölési módot használjunk, mert még így is megtörténhet, hogy nehezen tudjuk utólag azonosítani az egyes változókat.

A MATLAB utasításokat soronként adjuk meg, vagy egy sorban egymás után pontosvesszővel (;) elválasztva őket. A ;-nek van még más szerepe is: a változóérték megadásakor nem írja vissza a csomag az értékeket, ha a sort ezzel a jellel zárjuk, de minden értékét kiírja a tömbnek, ha a ; nincs ott!

Az adott utasítás(ok) az ENTER billentyű megnyomásának hatására kerül(nek) végrehajtásra. Célszerű egy hosszabb feladathoz tartozó parancssorokat előbb egy M-file formátumban megírni (pl. a MATLAB saját szövegszerkesztőjével), azt elmenteni saját munkaterületünkre, majd utána az adott M-file-t meghívással futtatni (az üres parancssorba az M-file nevét kell csak beírni).

Fontos: az utasítássor szerkezetében a hozzárendelés (= egyenlőségjel) jelének bal oldalán általában a kiszámításra, megadásra kerülő változó neve szerepel, míg jobb oldalán az hozzárendelés leírás. Ha a baloldali változónevet nem adjuk meg, akkor a hozzárendelés eredménye az ans nevű mátrixban helyezi el, amit ezen a néven hívhatunk, amíg felül nem írj azt egy hasonló számítás.

Page 3: 1. gyakorlatusers.nik.uni-obuda.hu/takacsm/fuzzy/fuzzy_2012tavasz/... · 2012-03-16 · ENTER billentyű lenyomásával érvényesítünk, az előző parancs, parancsok visszahívhatók

A MATLAB a változók értékei az alábbi alapvető műveletek nyomán változtathatja:

a) aritmetikai, algebrai, logikai és relációs műveletek;

b) MATLAB matematikai függvényszámítások;

c) speciális MATLAB utasítások;

d) M-file típusú meghívások;

e) MEX-file típusú meghívások alapján.

3. feladat

3.a. Adjunk egy változónak értéket! >> a=3 a = 3 >> a=3; 3.b. Adjunk egy sorozatot! Meg kell adni a sorozat első és utolsó elemét, és a sorozat elemei közötti lépésközt a következő formátumban:

x=kezdőérték:lépésköz:végérték;

Például:

x=150:0.1:190; (ahol a kezdőérték=150; a lépésköz=0.1; a végérték=190; az elemek az x tömbben tárolódnak, de nem íródnak ki a képernyőre a ; miatt)

Az utasítás végén a pontosvessző biztosítja, hogy csak létrehozza a sorozatot, de ne írja ki képernyőre. Az utasítás végéről a pontosvesszőt elhagyva a keletkezett tömbelemek láthatóak lesznek.

I.3. A MATLAB programozási alapjai

I.3.1. Mátrixok előállítása

I.3.1.1. Mátrixok bevitele billentyűzetről

A. Mátrixok közvetlen megadása

a) Gépeljük be a következőket:

a=[-1,0 0;2 sqrt(25),0;1 3*4,-10]

és nyomjuk meg az ENTER billentyűt. A válasz a következő:

Page 4: 1. gyakorlatusers.nik.uni-obuda.hu/takacsm/fuzzy/fuzzy_2012tavasz/... · 2012-03-16 · ENTER billentyű lenyomásával érvényesítünk, az előző parancs, parancsok visszahívhatók

a =

-1 0 0

2 5 0

1 12 -10

Vegyük észre, hogy a mátrix "neve" lehet kisbetű is, és hogy az elemeket szögletes zárójelek közé helyezzük. Az egyes elemeket a ","-vessző vagy a " "-szóköz, míg a sorokat a ";"-pontosvessző választja el. Mátrix elem lehet bármilyen kiértékelhető matematikai kifejezés (lásd a fenti példát!).

b) Adott mátrix elemei, sorai, oszlopai, részmátrixai egyszerű hivatkozással érhetők el. Például, ha azt gépeljük be, hogy:

a(3,2)

akkor a számítógép válasza:

ans =

12

vagyis az "a" mátrix harmadik sorának második eleme. Az eredményt az "ans" név alatt kaptuk meg.

Ha az "a" mátrix második sora érdekel csak, akkor az

a2=a(2,:)

beírására az:

a2 =

2 5 0

részmátrixot kapjuk. Vegyük észre a ":"-kettőspont szerepét a felírásban!

Case sensitive

Előzőleg használt parancsok előhívása: ↑

Parancs leírásának megtekintése: help parancsnév (pl.: help for)

Sorozat létrehozása: Meg kell adni a sorozat kezdőértékét, végértékét és a sorozat elemei közötti lépésközt a következő formátumban:

x=kezdőérték:lépésköz:végérték;

Page 5: 1. gyakorlatusers.nik.uni-obuda.hu/takacsm/fuzzy/fuzzy_2012tavasz/... · 2012-03-16 · ENTER billentyű lenyomásával érvényesítünk, az előző parancs, parancsok visszahívhatók

Konkrét értékeket behelyettesítve:

x=150:0.1:190; (ahol a kezdőérték=150; a lépésköz=0.1; a végérték=190; az elemek az x tömbben jönnek létre)

Az utasítás végén a pontosvessző biztosítja, hogy csak létrehozza a sorozatot, de ne írja ki képernyőre. Az utasítás végéről a pontosvesszőt elhagyva a keletkezett tömbelemek láthatóak lesznek.

Függvény definiálása: Egy a fenti x értékekhez tartozó lehetséges tagsági függvény megadása:

=

−−=

0

00,1max)(dha

dhad

axxA

Konkrét értékeket behelyettesítve:

y=max((1-abs(x-170)/10),0); (ahol a=170; d=10)

Függvény definiálásánál is érvényes a pontosvesszőre vonatkozó szabály. Amennyiben pontosvesszővel zárul az utasítás, csak definiálja a függvényt, de nem jeleníti meg az értékeket, a pontosvessző elhagyásakor pedig kiíródnak a függvény értékek.

Függvény kirajzolása: A megfelelő (x,y) párok kirajzolása a plot paranccsal történik:

plot(x,y) vagy plot(x,y,’r’) (ahol ’r’ a rajzolás színét adja meg, ebben az esetben piros (red))

melynek eredménye a következő függvény:

150 155 160 165 170 175 180 185 1900

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

Page 6: 1. gyakorlatusers.nik.uni-obuda.hu/takacsm/fuzzy/fuzzy_2012tavasz/... · 2012-03-16 · ENTER billentyű lenyomásával érvényesítünk, az előző parancs, parancsok visszahívhatók

Függvény matematikai leírása:

( )010

100 xx

xxyy

yy −−−

=−

ahol (x0,y0) az egyik, (x1,y1) a másik végpontja az egyenesnek

A következő függvény ábrázolásához először a matematikai leírásra van szükség.

150 155 160 165 170 175 180 185 1900

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

A fenti képletbe helyettesítve a (x0,y0)=(160,0) és az (x1,y1)=(170,1) pontokat, adódik az x=[160,170] közötti egyenes matematikai leírása:

( )160170160100 −

−−

=− xy

10160−

=xy

A többi x érték esetén a függvény értéke állandó, tehát a tagsági függvény teljes leírása:

( )

<<−

=

1701

17016010160

1600)(1

xha

xhaxxha

xA

Ciklus és elágazás használata: A fenti függvény ábrázolásához az egyes függvény szakaszokat külön kell kezelni x értékétől függően.

Először tudni kell, hány elemű a korábban létrehozott x tömb (x=150:0.1:190) Ennek meghatározása a size(x) paranccsal történik, az eredmény 401 (ennyiszer kell a ciklusnak lefutnia).

Page 7: 1. gyakorlatusers.nik.uni-obuda.hu/takacsm/fuzzy/fuzzy_2012tavasz/... · 2012-03-16 · ENTER billentyű lenyomásával érvényesítünk, az előző parancs, parancsok visszahívhatók

Az elágazás szintaxisa

IF feltétel

utasítások

ELSEIF feltétel

utasítások

ELSE utasítások

END A for ciklus szintaxisa:

FOR i = 1:N

FOR j = 1:N

utasítások;

END END

A konkrét értékekkel:

FOR i=1:401

IF x(i)<160

y(i)=0;

ELSEIF x(i)<170

y(i)=(x(i)-160)/10;

ELSE

y(i)=1;

END

END

Két függvény fuzzy metszete (ZADEH): A fenti y függvény és egy z függvény metszetének meghatározása következik, ahol z=max(1-abs(x-160)/5,0);

Ahhoz, hogy y és z függvény egyszerre legyen látható, az y kirajzolása után a hold on parancsot kell beírni, ezután lehet kirajzolni a z függvényt. A hold on parancs hatása egészen addig tart, amíg a hold off paranccsal ki nem kapcsoljuk.

plot(x,y) hold on plot(x,z,’r’)

Page 8: 1. gyakorlatusers.nik.uni-obuda.hu/takacsm/fuzzy/fuzzy_2012tavasz/... · 2012-03-16 · ENTER billentyű lenyomásával érvényesítünk, az előző parancs, parancsok visszahívhatók

Az eredményül kapott ábra:

150 155 160 165 170 175 180 185 1900

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

A metszet zy=min(y,z) A lenti ábrában *-gal jelöljve: plot(x,zy,’*’)

150 155 160 165 170 175 180 185 1900

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

Két függvény fuzzy uniója (ZADEH) zymax=max(y,z);

Az uniót zölddel jelölve: plot(x,zymax,'g')

Page 9: 1. gyakorlatusers.nik.uni-obuda.hu/takacsm/fuzzy/fuzzy_2012tavasz/... · 2012-03-16 · ENTER billentyű lenyomásával érvényesítünk, az előző parancs, parancsok visszahívhatók

150 155 160 165 170 175 180 185 1900

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

Melléklet: néhány fontosabb, gyakran használt MATLAB parancs és jelentése (a http://ait.iit.uni-miskolc.hu/~ait/segedlet/matlab/matlab-1.htm forrásból)

Általános utasítások demo - bemutató jellegű programok help - a "súgó" meghívása what - M-, MAT- és MEX-file-ok listázása

type - M-file tartalmának kiírása

diary - a munkaszöveg mentése delete - munkaállomány törlése who - munkaterület változóinak listázása

clear - munkaterület törlése

load - munkaterület változóinak betöltése

save - munkaterület változóinak mentése

size - mátrix dimenziói length - vektor hossza clc - parancsképernyő törlése more - ablakos lapozás startup - M-file végrehajtása indításkor quit - program befejezés

I.2.4.3. Algebrai alapműveletek Tömbműveletek Mátrixműveletek + - összeadás + - összeadás - - kivonás - - kivonás .* - elemek szerinti szorzás * - szorzás ./ - elemek szerinti osztás / - osztás .^ - elemek szerinti hatványozás ^ - hatványozás .\ - elemek szerinti baloldali osztás \ - balról való osztás .' - transzponálás ' - konjugált transzponálás

I.2.4.4. Relációs és logikai műveletek < - kisebb > - nagyobb <= - kisebb vagy egyenlő >= - nagyobb vagy egyenlő == - egyenlő ~= - nem egyenlő & - ÉS | - VAGY ~ - NEGÁCIÓ xor - KIZÁRÓ VAGY

Page 10: 1. gyakorlatusers.nik.uni-obuda.hu/takacsm/fuzzy/fuzzy_2012tavasz/... · 2012-03-16 · ENTER billentyű lenyomásával érvényesítünk, az előző parancs, parancsok visszahívhatók

I.2.4.5. Matematikai függvények sin - színusz asin - arkuszszínusz sinh - színusz hiperbolikusz asinh - arkuszszínusz hiperbolikusz cos - koszínusz acos - arkuszkoszinusz cosh - koszínusz hiperbolikusz acosh - arkuszkoszinusz hiperbolikusz tan - tangens atan - arkusztangens tanh - tangens hiperbolikusz atanh - arkusztangens hiperbolikusz cot - kotangens acot - arkuszkotangens coth - kotangens hiperbolikusz acoth - arkuszkotangens hiperbolikusz sec - szekáns asec - arkuszszekáns sech - szekáns hiperbolikusz asech - arkuszszekáns hiperbolikusz csc - koszekáns acsc - arkuszkoszekáns csch - koszekáns hiperbolikusz acsch - arkuszkoszekáns hiperbolikusz pow2 - exponenciális (2-es alapú) log2 - logaritmus (2-es alapú) exp - exponenciális (e-alapú) log - logaritmus (e-alapú) log10 - logaritmus (10-es alapú) sqrt - négyzetgyök lcm - legkisebb közös többszörös gcd - legnagyobb közös osztó real - komplex valós része imag - komplex képzetes része angle - komplex fázisszöge conj - komplex konjugált rem - osztás maradék sign - szignum (előjel) függvény round - kerekítés a legközelebbi egészre fix - kerekítés egészre (törtrész nélkül) ceil - kerekítés felfele floor - kerekítés lefele abs - abszolút érték atan2 - arkusztangens (4 negyedes)

I.2.4.6. Mátrix- és vektorfüggvények det - (négyzetes) mátrix determinánsa rank - mátrix rangja norm - mátrix vagy vektor normája orth - mátrix ortonormál bázisa inv - (négyzetes) mátrix inverze eig - sajátérték és sajátvektor poly - mátrix karakterisztikus polinomja poly - gyökökből polinom (sorvektor) expm - mátrix exponenciális logm - mátrix logaritmus sqrtm - mátrix négyzetgyök funm - általános mátrix függvény értéke cross - vektorok vektoriális szorzata dot - vektorok skaláris szorzata cdf2rdf - complexből valós átlós alak rsf2csf - valósból komplex átlós alak

I.2.4.7. Adatanalizís utasítások és Fourier transzformációk max -legnagyobb érték min - legkisebb érték mean - átlagérték median - középérték sum - adatok összege prod - adatok szorzata sort - rendezés növekvő sorrendbe std - standard eltérés cov - kovariancia adatok összege corrcoef - korelációs együtthatók trapz - numerikus integrálás (trapéz módsz.)

diff - differenciál és/vagy derivált

del2 - diszkrét Laplace gradient - gradiens filter - elsőfokú szűrő filter2 - másodfokú szűrő fft - diszkrét Fourier transzformáció ifft - inverz diszkrét Fourier transzf. fft2 - 2. diszkrét Fourier transzformáció ifft2 - 2. inverz diszkrét Fourier transzf.

I.2.4.8. Polinomiális, interpolációs és egyéb függvények conv - konvolúció ,polinomiális szorzat deconv - dekonvolúció, polinomiális

Page 11: 1. gyakorlatusers.nik.uni-obuda.hu/takacsm/fuzzy/fuzzy_2012tavasz/... · 2012-03-16 · ENTER billentyű lenyomásával érvényesítünk, az előző parancs, parancsok visszahívhatók

osztás polyval - polinom értéke polifit - polinomiális interpoláció polyvalm - mátrixpolinom értéke roots - polinom gyökei polyder - polinom deriváltja residue - (egyszerű) résztörtekre bontás interp1 - elsőfokú polinomiális interpoláció

interp2 - másodfokú polinomiális interpoláció

fmin - egyváltozós függvény minimuma fmins - többváltozós függvény minimuma

ode23 - alacsonyrendű differenciál megoldás

ode45 - magasrendű integrál megoldás

quad - alacsonyrendű integrál megoldás quad8 - magasrendű integrál megoldás

I.2.4.9. Speciális MATLAB utasítások feval - függvény végrehajtás function - új függvény megnevezés if - feltételes végrehajtás elseif - az "if" használata esetén else - az "if" használata esetén while - feltételes ismétlés for - ismétlés adott számszor end - az "if", "while", "for" vége pause - végrehajtás felfüggesztés break - hurokművelet befejezése return - visszatérés egy adott függvényre dbstatus - megszakítási pontok listázása dbstep - program soronkénti végrehajtása dbquit - soronkénti végrehajtás vége dbstop - programmegszakítási pont beszúrás

dbclear - programmegszakítási pont törlés

I.2.4.10. Speciális mátrixok és mátrixműveletek eye - egységmátrix zeros - zérókból álló mátrix ones - 1-esekből álló mátrix gallery - teszt mátrix rand - véletlenszám mátrix randn - norm. disztrib. véletlenszám

mátr. diag - mátrix átlós elemei magic - varázsmátrix vander - Vandermonde mátrix compan - kompanion mátrix tril - alsó háromszög mátrix kiemelés triu - felső háromszög mátrix kiemelés

I.2.4.11. Speciális karakterek + - plusz - - mínusz = - hozzárendelés jele . - tizedes pont % - szöveges megjegyzés kezdete ; - pontosvessző (sorvég jel) , - vessző (választójel) : - kettőspont (tömbmanipuláció) [ ] - szögletes zárójelek (mátrixok) ( ) - kerek zárójelek (argumentumok) … - folytatás ! - DOS parancs beszúrása

I.2.4.12. Speciális számértékek pi - a "pi" értéke (3,14159265...) i,j - imaginárius egység ( ) ans - utolsó számítás eredménye NaN - nem szám(Not a Number) realmax - a lehető legnagyobb valós szám realmin - a lehető legkisebb valós szám

I.2.4.13. Két -és háromdimenziós grafikus megjelenítés plot - lineáris interpolációs rajzolás loglog - logaritmusos skálájú rajzolás semilogx - x-tengelyen logaritmikus rajzolás semilogy - y-tengelyen logaritmikus rajzolás bar - oszlopgrafikon polar - rajzolás poláris koordinátákban

Page 12: 1. gyakorlatusers.nik.uni-obuda.hu/takacsm/fuzzy/fuzzy_2012tavasz/... · 2012-03-16 · ENTER billentyű lenyomásával érvényesítünk, az előző parancs, parancsok visszahívhatók

fplot - függvény kirajzolása stairs - lépcsőzetes ábrázolás grid - rácsozat title - grafikon címe text - grafikon szövegezés gtext - szöveg elhelyezése egérrel xlabel - az x-tengely jelőlése ylabel - az y-tegely jelőlése zlabel - z-tengely jelőlése zoom - nagyítás / kicsinyítés plot3 - 3D rajzolás contourc - kontür rajz számolás contour - 2D kontür rajzolás contour3 - 3D kontür rajzolás mesh - 3D metszet felületek kirajzolása surf - 3D árnyékolt területek kirajzolása axis - tengelyek skálázása és kirajzolása caxis - tengelyek skálázása álszínnel axes - tengelyek kirajzolása colormap - színtérkép cla - tengelyek törlése clf - rajz törlése figure - grafikus ablak létrehozása refresh - grafikus kép frissítése newplot - új tengelyek és grafikus képernyő

close - rajz bezárás

Források: Matlab segédanyag magyar nyelven: http://ait.iit.uni-miskolc.hu/~ait/segedlet/matlab/matlab-1.htm Matlab segédanyag angol nyelven: http://www.mathworks.com/support/ vagy a help menüpont Fuzzy tagsági függvények és műveleteik: http://www.tankonyvtar.hu/informatika/fuzzy-rendszerek-fuzzy-080904

Page 13: 1. gyakorlatusers.nik.uni-obuda.hu/takacsm/fuzzy/fuzzy_2012tavasz/... · 2012-03-16 · ENTER billentyű lenyomásával érvényesítünk, az előző parancs, parancsok visszahívhatók

2. gyakorlat A hagyományos (crisp) halmazokon értelmezett alapműveletek, a komplementumképzés, a metszet és az egyesítés többféle módon általánosíthatók fuzzy halmazokra. Ezek közül a leggyakrabban használt fuzzy halmazműveletek láthatók a következőkben.

Szükséges két fuzzy halmaz.

Az ábrázolandó tartomány a [150,190] intervallum 0,1-es lépésközzel: x=150:0.1:190;

Az első fuzzy halmaz ábrázolása: for i=1:401

if x(i)<160

y(i)=0;

elseif x(i)<180

y(i)=1-abs((x(i)-170)/10);

else

y(i)=0;

end

end

plot(x,y)

A második fuzzy halmaz ábrázolása: for i=1:401

if x(i)<167

y1(i)=0;

elseif x(i)<183 y1(i)=1-abs((x(i)-175)/8);

else

y1(i)=0;

end

end

plot(x,y1,'r')

Page 14: 1. gyakorlatusers.nik.uni-obuda.hu/takacsm/fuzzy/fuzzy_2012tavasz/... · 2012-03-16 · ENTER billentyű lenyomásával érvényesítünk, az előző parancs, parancsok visszahívhatók

150 155 160 165 170 175 180 185 1900

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

Fuzzy metszetek (t-normák) A leggyakrabban használt t-normák:

A mininmum Tm(a,b)=min(a,b)

for i=1:401

tz(i)=min(y(i),y1(i));

end

plot(x,tz,'*')

150 155 160 165 170 175 180 185 1900

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

Algebrai szorzat:Tp(a,b)=ab

Page 15: 1. gyakorlatusers.nik.uni-obuda.hu/takacsm/fuzzy/fuzzy_2012tavasz/... · 2012-03-16 · ENTER billentyű lenyomásával érvényesítünk, az előző parancs, parancsok visszahívhatók

for i=1:401

ta(i)=y(i)*y1(i);

end

plot(x,ta,'g')

150 155 160 165 170 175 180 185 1900

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

Lukasiewicz-féle t-norma: Tl(a,b)=max(0,a+b-1)

for i=1:401

tk(i)=max(0,y(i)+y1(i)-1);

end

plot(x,tk,'k')

Page 16: 1. gyakorlatusers.nik.uni-obuda.hu/takacsm/fuzzy/fuzzy_2012tavasz/... · 2012-03-16 · ENTER billentyű lenyomásával érvényesítünk, az előző parancs, parancsok visszahívhatók

150 155 160 165 170 175 180 185 1900

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

Drasztikus metszet 1

( , ) 10

D

a ha bT a b b ha a

egyébként

== =

for i=1:401

if y1(i)==1

td(i)=y(i);

elseif y(i)==1

td(i)=y1(i);

else

td(i)=0;

end

end

plot(x,td,’m’)

Page 17: 1. gyakorlatusers.nik.uni-obuda.hu/takacsm/fuzzy/fuzzy_2012tavasz/... · 2012-03-16 · ENTER billentyű lenyomásával érvényesítünk, az előző parancs, parancsok visszahívhatók

150 155 160 165 170 175 180 185 1900

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

Fuzzy metszetek rendezettsége

Együtt ábrázolva a fenti fuzzy metszeteket (t-normákat) látható, hogy minden ]1,0[, ∈ba esetén teljesül a ),min(),(),(min babatbat ≤≤ egyenlőtlenség, vagyis a minimum a legnagyobb t-norma.

150 155 160 165 170 175 180 185 1900

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

Fuzzy uniók, konormák, diszjunkciók A leggyakrabban használt t-konormák:

1. ZADEH-féle unió

S(a,b)=max(a,b)

for i=1:401

sz(i)=max(y(i),y1(i));

end

Page 18: 1. gyakorlatusers.nik.uni-obuda.hu/takacsm/fuzzy/fuzzy_2012tavasz/... · 2012-03-16 · ENTER billentyű lenyomásával érvényesítünk, az előző parancs, parancsok visszahívhatók

plot(x,sz,’*’)

150 155 160 165 170 175 180 185 1900

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

2. Algebrai összeg

S(a,b)=a+b-ab

for i=1:401

sa(i)=y(i)+y1(i)-y(i)*y1(i);

end

plot(x,sa,’g’)

150 155 160 165 170 175 180 185 1900

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

3. Korlátos összeg

Page 19: 1. gyakorlatusers.nik.uni-obuda.hu/takacsm/fuzzy/fuzzy_2012tavasz/... · 2012-03-16 · ENTER billentyű lenyomásával érvényesítünk, az előző parancs, parancsok visszahívhatók

S(a,b)=min(1,a+b)

for i=1:401

sk(i)=min(1,y(i)+y1(i));

end

plot(x,sk,’c’)

150 155 160 165 170 175 180 185 1900

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

4. Drasztikus unió

==

=egyébként

ahabbhaa

bas1

00

),(max

for i=1:401

if y1(i)==0

sd(i)=y(i);

elseif y(i)==0

sd(i)=y1(i);

else

sd(i)=1;

end

end

plot(x,sd,’m’)

Page 20: 1. gyakorlatusers.nik.uni-obuda.hu/takacsm/fuzzy/fuzzy_2012tavasz/... · 2012-03-16 · ENTER billentyű lenyomásával érvényesítünk, az előző parancs, parancsok visszahívhatók

150 155 160 165 170 175 180 185 1900

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

5. Fuzzy uniók

Együtt ábrázolva a fenti fuzzy uniókat (t-konormákat, s-normákat) látható, hogy minden ]1,0[, ∈ba esetén teljesül a ),(),(),max( max basbasba ≤≤ egyenlőtlenség, vagyis a

ZADEH-féle unió a legkisebb t-konorma, vagy s-norma.

150 155 160 165 170 175 180 185 1900

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

3 dimenziós ábrázolás Létre kell hozni egy x-y síkban elhelyezett rácsozott felületet, erre szolgál az [Y,Y1]=meshgrid(0:.01:1,0:.01:1) parancs, ahol a paraméterek rendre az intervallum kezdete, a felbontás finomsága és az intervallum vége Y-ra, majd Y1-re.

Az ábrázoláshoz meg kell még határozni egy Z függvényt, majd a surf(Y,Y1,Z) paranccsal megkapható a 3D-s függvény.

Page 21: 1. gyakorlatusers.nik.uni-obuda.hu/takacsm/fuzzy/fuzzy_2012tavasz/... · 2012-03-16 · ENTER billentyű lenyomásával érvényesítünk, az előző parancs, parancsok visszahívhatók

Néhány fuzzy metszet 3D-s ábrázolása: 1. ZADEH-féle metszet

Tz=min(Y,Y1);

A függvényt megjelenítő ablakban a ikonnal forgatható a 3D-s kép, így bármilyen irányból megnézhető a függvény.

2. Korlátos különbség

Tk=max(0,Y+Y1-1);

Elforgatva:

Hasonlóképpen ábrázolható a többi fuzzy metszet és unió is 3 dimenzióban.

Page 22: 1. gyakorlatusers.nik.uni-obuda.hu/takacsm/fuzzy/fuzzy_2012tavasz/... · 2012-03-16 · ENTER billentyű lenyomásával érvényesítünk, az előző parancs, parancsok visszahívhatók

3. gyakorlat Fuzzy toolbox használata: a fuzzy szó leírásával indítható el (FIS Editor)

Első lépések beállítható a bemenet, illetve a kimenet neve (Name mező)

hozzárendelhető több bemenet, illetve kimenet (Edit/Add Variable…/Input)

elmenthető fájlba (File/Export/To File…) vagy a Matlabba exportálható (File/Export/To Workspace…)

megnyitható egy korábban elmentett fájl (File/Import/From File…) vagy Importálható (File/Import/From Workspace…)

a fájlok kiterjesztése: .fis

A bemenet legyen egy szoba hőmérséklete és ennek megfelelően kell meghatározni, hogy a ventilátor milyen fokozaton működjön.

A bemenet neve legyen „ho” a kimenet neve pedig „venti”.

Ezután a bemenetre kettőt kattintva beállíthatóak a tagsági függvények, illetve a hőmérsékleti tartomány. (Membership function editor)

A bemenet beállításai A hőmérsékleti tartomány 0-50 (Range)

Page 23: 1. gyakorlatusers.nik.uni-obuda.hu/takacsm/fuzzy/fuzzy_2012tavasz/... · 2012-03-16 · ENTER billentyű lenyomásával érvényesítünk, az előző parancs, parancsok visszahívhatók

A tagsági függvények neve: cold, cool, warm, hot (Name, a kijelölt tagsági függvényre vonatkozóan)

Alapállapotban 3 tagsági függvény van, ezért hozzá kell rendelni még egyet (Edit/Add MFs…)

A választható tagsági függvény típusok közül a leggyakrabban használt a trimf (háromszög) és a trapmf (trapéz)

A két szélső függvény általában trapéz alakú

A függvények mozgathatók (a teljes függvény, illetve a töréspontok is)

A függvény töréspontjainak helye számszerűen is megadható (Params)

A kimenet beállításai A fokozatok 1-10 közötti értékek legyenek (Range)

A tagsági függvények neve: zero, low, medium, high

Hozzá kell rendelni még egy tagsági függvényt

A két szélső függvény legyen trapéz alakú

Page 24: 1. gyakorlatusers.nik.uni-obuda.hu/takacsm/fuzzy/fuzzy_2012tavasz/... · 2012-03-16 · ENTER billentyű lenyomásával érvényesítünk, az előző parancs, parancsok visszahívhatók

Szabályok hozzáadása Ahhoz, hogy a bemenet és a kimenet közötti összefüggések leírhatók legyenek, meg kell fogalmazni őket if (feltétel) then (utasítás) szerkezetű szabályokban (Membership Function Editor menüjében Edit/Rules…)

Page 25: 1. gyakorlatusers.nik.uni-obuda.hu/takacsm/fuzzy/fuzzy_2012tavasz/... · 2012-03-16 · ENTER billentyű lenyomásával érvényesítünk, az előző parancs, parancsok visszahívhatók

A szabályok feltétel része (a szoba hőmérséklete) az ablak baloldalában adható meg, az ehhez kapcsolt utasítás (milyen fokozatra kell kapcsolnia ventillátornak) pedig az ablak jobb oldalán.

Lehetséges szabályok:

Szabályok grafikus megjelenítése A könnyebb áttekinthetőség kedvéért a szabályok grafikusan is megjeleníthetők (bármelyik ablakban View/Rules). A bemeneti érték változtatható a piros vonal mozgatásával, vagy konkrét érték adható meg az Input mezőben. A kimenet mindig ennek megfelelően változik, ugyanis fuzzy szabályozási rendszerekben a szabálypremissza és a szabálybemenet egybeesésének mértéke határozza meg az adott szabály kimenetének jelentőségét az adott szabálykimenetben.

Page 26: 1. gyakorlatusers.nik.uni-obuda.hu/takacsm/fuzzy/fuzzy_2012tavasz/... · 2012-03-16 · ENTER billentyű lenyomásával érvényesítünk, az előző parancs, parancsok visszahívhatók

A kimenet ábrázolása a bemenet függvényében Megtekinthető az is, hogy a bemenetektől függően hogyan változnak a kimenetek a szabályok eredményeképpen. (View/Surface)

Page 27: 1. gyakorlatusers.nik.uni-obuda.hu/takacsm/fuzzy/fuzzy_2012tavasz/... · 2012-03-16 · ENTER billentyű lenyomásával érvényesítünk, az előző parancs, parancsok visszahívhatók

A függvény exportálható Matlabba (Export/To Workspace) majd ott a gensurf(név) (név: az exportáláskor megadott változónév) paranccsal egy egyszerűen kezelhető ábraként jelenik meg a függvény.

Új bemenet hozzáadása A szoba hőmérséklete mellett legyen még egy bemenet, a szoba mérete m3-ben.

Az új bemenet tagsági függvényei:

Page 28: 1. gyakorlatusers.nik.uni-obuda.hu/takacsm/fuzzy/fuzzy_2012tavasz/... · 2012-03-16 · ENTER billentyű lenyomásával érvényesítünk, az előző parancs, parancsok visszahívhatók

A két bemenethez tartozó szabályok táblázatos formában:

small medium big

cold medium medium high

cool low medium medium

warm low low medium

hot zero low low

Rule Editorban:

Page 29: 1. gyakorlatusers.nik.uni-obuda.hu/takacsm/fuzzy/fuzzy_2012tavasz/... · 2012-03-16 · ENTER billentyű lenyomásával érvényesítünk, az előző parancs, parancsok visszahívhatók

A szabályok súlyozhatók (Weight) 0 és 1 közötti értékekkel.

A szabályok grafikus megjelenítése:

Page 30: 1. gyakorlatusers.nik.uni-obuda.hu/takacsm/fuzzy/fuzzy_2012tavasz/... · 2012-03-16 · ENTER billentyű lenyomásával érvényesítünk, az előző parancs, parancsok visszahívhatók

Kimenet ábrázolása a bemenetek függvényében (két bemenet esetén) Több bemenet esetén is a View/Surface menüponttal jeleníthető meg a kimenet a bemenet függvényében, de ekkor már az eredmény 3 dimenziós lesz.

Page 31: 1. gyakorlatusers.nik.uni-obuda.hu/takacsm/fuzzy/fuzzy_2012tavasz/... · 2012-03-16 · ENTER billentyű lenyomásával érvényesítünk, az előző parancs, parancsok visszahívhatók

Az ábra forgatható, így bármilyen irányból megnézhető, ezáltal pontosabb képet ad a függvény tulajdonságairól. Az esetleges exportálás (Export/ToWorkspace) után keletkezett ábra is forgatható, ahogy korábban a fuzzy metszetek 3 dimenziós ábrázolásánál is látható volt. Így az ábra egyszerűen elmenthető, később is könnyen kezelhető lesz.

4. gyakorlat

A Simulink blokkokból felépített dinamikus és beágyazott rendszerek szimulációjára alkalmas program. A modellt különböző típusosztályokba tartozó blokkokból építjük fel (források, fuzzy logikai szabályozó, kijelzők). A Simulink indítása Matlabból nevének leírásával történik, ekkor megjelenik a hozzá tartozó grafikus felület.

A következő példa tartalmaz egy fuzzy logikai szabályozót, aminek bemenete a szabályozási hiba, a mért vagy megfigyelt állapotváltozók, kimenete pedig a folyamat bemenete lesz, ezáltal egy visszacsatolást létrehozva az aktuális értéket illeszti a szabályokhoz. A cél, hogy az aktuális érték a kívánt értéket elérje, ennek megfelelően végzi el a következtetést a szabályozó.

Első lépés a modell megépítése:

Step:

: Gain: e

Gain1: e’

Fuzzy Logic Controller: maga a fuzzy szabályozó, a fuzzy toolboxban létre kell hozni egy fis fájlt, ami tartalmazza a beállításait

Discrete Filter1, Transport Delay, Transfer Fcn: együttesen alkotják magát a rendszert

Gain2: aktuális érték

Scope: grafikus megjelenítő a szimuláció megtekintéséhez

Page 32: 1. gyakorlatusers.nik.uni-obuda.hu/takacsm/fuzzy/fuzzy_2012tavasz/... · 2012-03-16 · ENTER billentyű lenyomásával érvényesítünk, az előző parancs, parancsok visszahívhatók

Sign1: a kimenő jelsorozat

Fuzzy szabályozó beállításai Ezután a Fuzzy toolboxban létre kell hozni a fuzzy szabályozó tagsági függvényeit és meg kell adni a hozzájuk tartozó szabályokat.

Két bemenet lesz, a hiba és a hiba eltérése

A hibához tartozó tagsági függvények:

Page 33: 1. gyakorlatusers.nik.uni-obuda.hu/takacsm/fuzzy/fuzzy_2012tavasz/... · 2012-03-16 · ENTER billentyű lenyomásával érvényesítünk, az előző parancs, parancsok visszahívhatók

Az eltérés tagsági függvényei:

A kimenet tagsági függvényei:

Page 34: 1. gyakorlatusers.nik.uni-obuda.hu/takacsm/fuzzy/fuzzy_2012tavasz/... · 2012-03-16 · ENTER billentyű lenyomásával érvényesítünk, az előző parancs, parancsok visszahívhatók

A szabályok:

Page 35: 1. gyakorlatusers.nik.uni-obuda.hu/takacsm/fuzzy/fuzzy_2012tavasz/... · 2012-03-16 · ENTER billentyű lenyomásával érvényesítünk, az előző parancs, parancsok visszahívhatók

A szimuláció Az elkészült fuzzy szabályozót nem elég fájlba menteni, exportálni kell a Matlab munkaablakába is (File/Export!To Workspace…), hogy a szimulációs modellben felhasználható legyen. A Simulink Fuzzy Logic Controller blokkjára kettőt kattintva a FIS file or structure mezőben kell megadni az így létrehozott, majd exportált fuzzy szabályozó nevét. Ezután elindítható a szimuláció (Simulation/Start) melynek eredménye a grafikus megjelenítő elemre (Scope) kattintva megtekinthető.

A szimuláció során látható, hogyan éri el a szabályozó a kívánt értéket. A képen a sárga vonal jelzi a kívánt értéket, a lila pedig a szabályozó aktuális értékeit.

5. gyakorlat Két különböző fuzzy szabályozóra épülő rendszer összehasonlítható egy modellbe építve őket, ezáltal elvégezhető a hatásvizsgálat, melynek eredményeként látható, hogy melyik szabályozó éri el hamarabb a kívánt eredményt.

Az ábrán látható modellben a két rendszer a fuzzy szabályozótól eltekintve minden más elemében azonos. A két szabályozó különbözhet tagsági függvényeiben, az alkalmazott műveletekben, az alkalmazott szabályrendszerben, vagy az egyes szabályok súlyozásában, aminek eredményeképpen az adott rendszer hatékonyabbá tehető.

Page 36: 1. gyakorlatusers.nik.uni-obuda.hu/takacsm/fuzzy/fuzzy_2012tavasz/... · 2012-03-16 · ENTER billentyű lenyomásával érvényesítünk, az előző parancs, parancsok visszahívhatók

Az ábra felső részén látható rendszer az előző példabeli rendszerrel teljesen megegyezik a fuzzy szabályozó tekintetében is. Ez kerül összehasonlításra az ábra alsó részén található rendszerrel, melynek a fuzzy szabályozója több tagsági függvényt alkalmaz mind a bemenetek, mind a kimenet esetén és jóval nagyobb a szabályrendszere is. A bemenet itt is e és e’lesz.

Az új fuzzy szabályozó beállításai A hiba tagsági függvényei:

Page 37: 1. gyakorlatusers.nik.uni-obuda.hu/takacsm/fuzzy/fuzzy_2012tavasz/... · 2012-03-16 · ENTER billentyű lenyomásával érvényesítünk, az előző parancs, parancsok visszahívhatók

Az eltérés tagsági függvényei:

A kimenet tagsági függvényei:

Page 38: 1. gyakorlatusers.nik.uni-obuda.hu/takacsm/fuzzy/fuzzy_2012tavasz/... · 2012-03-16 · ENTER billentyű lenyomásával érvényesítünk, az előző parancs, parancsok visszahívhatók

Az alkalmazott szabályrendszer táblázatos formában:

PB Z PS PM PM PB PB PB

PM NS Z PS PM PM PB PB

PS NM NS Z PS PM PM PB

Z NM NM NS Z PS PM PM

NS NB NM NM NS Z PS PM

NM NB NB NM NM NS Z PS

e’

NB NB NB NB NM NM NS Z

NB NM NS Z PS PM PB

e

A táblázat alapján a következőképpen írhatók fel az alkalmazott szabályok:

1. If (e is NB) and (de is NB) then (output1 is NB) (1)

2. If (e is NB) and (de is NM) then (output1 is NB) (1)

3. If (e is NB) and (de is NS) then (output1 is NB) (1)

4. If (e is NB) and (de is Z) then (output1 is NM) (1)

5. If (e is NB) and (de is PS) then (output1 is NM) (1)

6. If (e is NB) and (de is PM) then (output1 is NS) (1)

Page 39: 1. gyakorlatusers.nik.uni-obuda.hu/takacsm/fuzzy/fuzzy_2012tavasz/... · 2012-03-16 · ENTER billentyű lenyomásával érvényesítünk, az előző parancs, parancsok visszahívhatók

7. If (e is NB) and (de is PB) then (output1 is Z) (1)

8. If (e is NM) and (de is NB) then (output1 is NB) (1)

9. If (e is NM) and (de is NM) then (output1 is NB) (1)

10. If (e is NM) and (de is NS) then (output1 is NM) (1)

11. If (e is NM) and (de is Z) then (output1 is NM) (1)

12. If (e is NM) and (de is PS) then (output1 is NS) (1)

13. If (e is NM) and (de is PM) then (output1 is Z) (1)

14. If (e is NM) and (de is PB) then (output1 is PS) (1)

15. If (e is NS) and (de is NB) then (output1 is NB) (1)

16. If (e is NS) and (de is NM) then (output1 is NM) (1)

17. If (e is NS) and (de is NS) then (output1 is NM) (1)

18. If (e is NS) and (de is Z) then (output1 is NS) (1)

19. If (e is NS) and (de is PS) then (output1 is Z) (1)

20. If (e is NS) and (de is PM) then (output1 is PS) (1)

21. If (e is NS) and (de is PB) then (output1 is PM) (1)

22. If (e is Z) and (de is NB) then (output1 is NM) (1)

23. If (e is Z) and (de is NM) then (output1 is NM) (1)

24. If (e is Z) and (de is NS) then (output1 is NS) (1)

25. If (e is Z) and (de is Z) then (output1 is Z) (1)

26. If (e is Z) and (de is PS) then (output1 is PS) (1)

27. If (e is Z) and (de is PM) then (output1 is PM) (1)

28. If (e is Z) and (de is PB) then (output1 is PM) (1)

29. If (e is PS) and (de is NB) then (output1 is NM) (1)

30. If (e is PS) and (de is NM) then (output1 is NS) (1)

31. If (e is PS) and (de is NS) then (output1 is Z) (1)

32. If (e is PS) and (de is Z) then (output1 is PS) (1)

33. If (e is PS) and (de is PS) then (output1 is PM) (1)

34. If (e is PS) and (de is PM) then (output1 is PM) (1)

35. If (e is PS) and (de is PB) then (output1 is PB) (1)

36. If (e is PM) and (de is NB) then (output1 is NS) (1)

37. If (e is PM) and (de is NM) then (output1 is Z) (1)

38. If (e is PM) and (de is NS) then (output1 is PS) (1)

39. If (e is PM) and (de is Z) then (output1 is PM) (1)

40. If (e is PM) and (de is PS) then (output1 is PM) (1)

41. If (e is PM) and (de is PM) then (output1 is PB) (1)

Page 40: 1. gyakorlatusers.nik.uni-obuda.hu/takacsm/fuzzy/fuzzy_2012tavasz/... · 2012-03-16 · ENTER billentyű lenyomásával érvényesítünk, az előző parancs, parancsok visszahívhatók

42. If (e is PM) and (de is PB) then (output1 is PB) (1)

43. If (e is PB) and (de is NB) then (output1 is Z) (1)

44. If (e is PB) and (de is NM) then (output1 is PS) (1)

45. If (e is PB) and (de is NS) then (output1 is PM) (1)

46. If (e is PB) and (de is Z) then (output1 is PM) (1)

47. If (e is PB) and (de is PS) then (output1 is PB) (1)

48. If (e is PB) and (de is PM) then (output1 is PB) (1)

49. If (e is PB) and (de is PB) then (output1 is PB) (1)

A szimuláció A szimuláció során látható, hogy a bonyolultabb, több szabállyal és tagsági függvénnyel rendelkező fuzzy szabályozó (kék) már az első lépéseknél hatékonyabban közelít a kívánt értékhez és gyorsabban is éri el azt, mint az előző példában alkalmazott egyszerű, négy szabállyal rendelkező szabályozó (lila).