MATLAB1-Funktionen und -Anwendungen · Achtung: Reihenfolge X, y beachten im Unterschied zu...

22
Fakultät Maschinenwesen der TU Dresden Institut für Verfahrenstechnik und Umwelttechnik Professur Verfahrensautomatisierung Ausgewählte MATLAB -Funktionen und -Anwendungen 1 zur Nutzung in der Lehrveranstaltung “Experimentelle Prozessanalyse“ Stand: 09. 04. 2015 Matlab R2014a + Toolboxes (Statistics-TB, Fuzzy-TB) ® 1 The MathWorks, Inc. ®

Transcript of MATLAB1-Funktionen und -Anwendungen · Achtung: Reihenfolge X, y beachten im Unterschied zu...

Page 1: MATLAB1-Funktionen und -Anwendungen · Achtung: Reihenfolge X, y beachten im Unterschied zu regress! Graphische Darstellungen zur interaktiven Kontrolle der schrittweisen Aufnahme

Fakultät Maschinenwesen der TU DresdenInstitut für Verfahrenstechnik und UmwelttechnikProfessur Verfahrensautomatisierung

Ausgewählte

MATLAB -Funktionen und -Anwendungen1

zur Nutzung in der Lehrveranstaltung

“Experimentelle Prozessanalyse“

Stand: 09. 04. 2015

Matlab R2014a + Toolboxes (Statistics-TB, Fuzzy-TB) ®1

The MathWorks, Inc.®

Page 2: MATLAB1-Funktionen und -Anwendungen · Achtung: Reihenfolge X, y beachten im Unterschied zu regress! Graphische Darstellungen zur interaktiven Kontrolle der schrittweisen Aufnahme

-2-

1. Matlab-Komponenten zur statistischen Datenanalyse und Modellierung

1.1. Laden von Daten in den Workspace

Der Menüpunkt Import Data im Filemenü startet den Import Wizard. Die Daten werden unterdem Filenamen (ohne Erweiterung) im Workspace abgelegt. Im folgenden seien Daten unter denVariablen x, y (Vektoren) und daten (Datenmatrix) bzw. in den Beispielen unter Auto undSchokvm verfügbar.Die Workspace-Variablen können über den Menüpunkt Save Workspace as ... im Filemenü alsMatlab-File (Standarderweiterung .mat) gespeichert und über Open im Filemenü wiedereingelesen werden.

1.2. Statistische und empirische Kennwerte

- mean(x) Mittelwert- median(x) Median- var(x) Streuung- std(x) Standardabweichung

max min -- range(x) Spanne (= x - x )- iqr(x) Interquartilspanne (F-Spread)- corrcoef(daten) Korrelationsmatrix R

corrcoef(x,y) entspricht corrcoef([x y])- zscore(daten) Normierung auf Mittelwert 0 und Streuung 1- prctile(x,q) Quantile der Ordnung q

1.3. Statistical Plots

* Box-Plot-Darstellungen

- boxplot(daten)- boxplot(daten(:,m1:m2),notch,...,‘symbol‘,...,’orientation’,...)

Merkmale (Spalten der Datenmatrix) m1 bis m2 werden dargestellt;notch = ‘on’: „eingekerbtes“ Boxplotnotch = ‘off’: rechteckiges Boxplot (Standard)symbol: Plot-Symbol für Ausreißer (Standard ´r+´)orientation=’horizontal’: horizontales Boxplotorientation=’vertical’: vertikales Boxplot (Standard)

Page 3: MATLAB1-Funktionen und -Anwendungen · Achtung: Reihenfolge X, y beachten im Unterschied zu regress! Graphische Darstellungen zur interaktiven Kontrolle der schrittweisen Aufnahme

-3-

Beispiel: boxplot(Schokvm(:,6:9),’notch‘,’on’,’symbol’,’*‘,’orientation’,’horizontal’)

* Histogramme

- hist(x,p)Histogramm mit p Balken

- histfit(x,p)wie oben, aber zusätzlich wird die zugehörige Normalverteilung eingeblendet

Beispiel: histfit(Schokvm(:,6),20)

Page 4: MATLAB1-Funktionen und -Anwendungen · Achtung: Reihenfolge X, y beachten im Unterschied zu regress! Graphische Darstellungen zur interaktiven Kontrolle der schrittweisen Aufnahme

-4-

* Scattergramme

- scatter(x,y)X-Y-Plot

- gscatter(x,y,group,‘clr‘,‘sym‘,siz)group: Gruppierungsvariable (Vektor der gleichen Länge wie x und y)clr: Farbstring-Vektorsym: Plotsymbol-Vektorsiz: Markergröße

Beispiel: gscatter(Schokvm(:,1),Schokvm(:,6),Schok3,‘rgb‘,‘+*o‘,8)(Schok3 enthält die Klassennummern einer 3-Klassenlösung)

- plotmatrix(daten(:,m1:m2),daten(:,m3:m4))Matrix aus Scatterplots, sonst wie scatter

- plotmatrix(daten,[])alle paarweisen X-Y-Plots aus daten

- auch als gplotmatrix entsprechend gscatter

Beispiel: plotmatrix(Schokvm(:,1:3),Schokvm(:,6:9))

Page 5: MATLAB1-Funktionen und -Anwendungen · Achtung: Reihenfolge X, y beachten im Unterschied zu regress! Graphische Darstellungen zur interaktiven Kontrolle der schrittweisen Aufnahme

-5-

1.4. Hauptkomponenten- und Faktorenanalyse

- [coeff, score, ew] = princomp(X) Hauptkomponentenanalyse

X: n × m - Datenmatrixcoeff: m × m - Matrix der Hauptkomponenten (Transformationsmatrix)score: n × m - die in den Raum der HK transformierte Datenmatrixew: Vektor der Eigenwerte

- fakt = factoran ( X, p, ‘rotate’, rot) Faktorenanalyse

X: n × m - Datenmatrixp: Anzahl der Faktorenrot: Rotationsverfahren: ‘none’: keine Rotation

‘varimax’: Varimax-Rot. (Standard)fakt: Ladungsmatrix

1.5. Multiple quasilineare Regression

- [b,bint,r,rint,stats] = regress(y,X)

y : n × 1 - Vektor der Ausgangsgröße (Regressand)X : n × p - Matrix der Regressoren (s.Bemerkung unten)b: nach MkQ geschätzter Parametervektor des parameterlinearen Modellsbint: Vektor der 95%-Konfidenzintervalle [bint(:,1),bint(:,2)] für br: Residuenvektorrint: Vektor der 95%-Konfidenzintervalle für rstats(1):Bestimmtheitsmaß

Achtung: X muss alle Regressoren enthalten, einschließlich des konstanten Terms imAnsatz! Bei rein linearen Modellen sollte deshalb wie folgt vorgegangen werden:X = [ones(size(daten,1),1) daten] (dies erzeugt die um die „Einser-Spalte“ erweiter-

te Datenmatrix).Das Anfügen quadratischer Terme geht dann z.B. sehr elegant durch folgenden Befehl:XQ = [X daten .* daten]Neben dieser Variante können auch Funktionen zur Konstruktion von Versuchsplanma-trizen für das Aufstellen der Regressorenmatrix herangezogen werden:- X = x2fx(daten) für das lineare Modell bzw.- X = x2fx(daten,‘model‘) für andere Modelle, und zwar

´model‘ = ´interaction‘ konstanter Term, lineare Terme und ein-fache Wechselwirkungen

´model‘ = ´quadratic‘ konstanter Term, lineare und quadratischeTerme und einfache Wechselwirkungen

´model‘ = ´purequadratic‘ konstanter Term, lineare und quadratischeTerme.

Page 6: MATLAB1-Funktionen und -Anwendungen · Achtung: Reihenfolge X, y beachten im Unterschied zu regress! Graphische Darstellungen zur interaktiven Kontrolle der schrittweisen Aufnahme

-6-

Beispiel:X = [ones(size(Schokvm,1),1) Schokvm(:,1:5)];[b,bint,r,rint,stats] = regress(Schokvm(:,6),X);plot(r,‘*‘); % einfache Residuendarstellung (Plot links)

% oderrcoplot(r,rint); % spezielle Residuendarstellung (Plot rechts)

% Konfidenzintervalle, die Null nicht enthalten, könnten auf% Ausreißer deuten

- stepwise(X,y) Interaktives Tool zur schrittweisen Regression

X : n × p - Matrix der (potentiellen) Regressoren (ohne „Einserspalte“)y : n × 1 - Vektor der Ausgangsgröße (Regressand)Achtung: Reihenfolge X, y beachten im Unterschied zu regress!

Graphische Darstellungen zur interaktiven Kontrolle der schrittweisen Aufnahme vonTermen ins Modell bzw. des Streichens aus dem Modell.

Koeffizienten sind nicht signifikant von Null verschieden (und sollten deshalb aus demModell eliminiert werden), wenn ihr Konfidenzintervall Null enthält. Ein Mausklick aufdie Konfidenzintervall-Linie führt zur Änderung des Status des betreffenden Koeffizien-ten (im Modell vorhanden - blau dargestellt - oder nicht vorhanden - rot dargestellt - ).Bei stark unterschiedlicher Größenordnung der Einflussgrößen (und damit in der Regelauch der Koeffizienten) ist zur Verbesserung der visuellen Beurteilung im Menüpunkt“Stepwise” der Schalter Scale Inputs zu setzen.

Achtung: Das Regressionsmodell enthält hier automatisch auch den konstanten Term,ohne dass dieser angezeigt wird oder exportiert werden kann. Also liefertregress(y,[ones(size(daten,1),1) daten]) die gleichen Ergebnisse wie stepwise(daten,y).

Page 7: MATLAB1-Funktionen und -Anwendungen · Achtung: Reihenfolge X, y beachten im Unterschied zu regress! Graphische Darstellungen zur interaktiven Kontrolle der schrittweisen Aufnahme

-7-

Beispiel:stepwise([Schokvm(:,1:5) Schokvm(:,1:5).*Schokvm(:,1:5)], Schokvm(:,6));% Ansatz aus konst., lin. + quadr. Termen der Einflussgroessen;% Ergebnisfenster zeigen die Signifikanz der ersten Einflussgroesse (linear + quadr.);

- rstool(X,y) Interaktives graphisches Tool zur Regression

X : n × m - Matrix der Eingangsgrößen (Achtung: nicht aller Regressoren)y : n × 1 - Vektor der Ausgangsgröße (Regressand)generiert ein rein lineares Regressionsmodell mit konstantem Term

- rstool(X,y,‘model‘) generiert verschiedene Standardmodelle (vgl. x2fx-Funkti-on auf Seite 7)

Page 8: MATLAB1-Funktionen und -Anwendungen · Achtung: Reihenfolge X, y beachten im Unterschied zu regress! Graphische Darstellungen zur interaktiven Kontrolle der schrittweisen Aufnahme

-8-

Möglichkeiten im Graphikfenster:° Vorhersage von Werten bei interaktiver Veränderung der Werte der Eingangsgrößen° Änderung der Modellstruktur° Export der Ergebnisse (Parameter, Residuen, RMSE = root mean squared error)

Beispiel:rstool(Schokvm(:,1:5) , Schokvm(:,6) , ‘purequadratic‘);% Ansatz aus konst., lin. + quadr. Termen der Einflussgroessen;% Ergebnisfenster zeigt die Signifikanz der ersten Einflussgroesse;

1.6. Parameter-nichtlineare Regression

- [b,res] = nlinfit(X,y,‘model‘,bstart)

X : n × m - Matrix der Eingangsgrößeny : n × 1 - Vektor der Ausgangsgröße (Regressand)´model‘: String, der den Namen der nichtlinearen Funktion enthältbstart: Anfangsschätzung für die Parameter b: MkQ-Schätzung für die Parameterres: Residuenvektor

Page 9: MATLAB1-Funktionen und -Anwendungen · Achtung: Reihenfolge X, y beachten im Unterschied zu regress! Graphische Darstellungen zur interaktiven Kontrolle der schrittweisen Aufnahme

-9-

- nlintool(X,y,‘model‘,bstart)

interaktives graphisches Tool zur nichtlinearen Regression (analog rstool) Möglichkeiten im Graphikfenster:° Vorhersage von Werten bei interaktiver Veränderung der Werte der Eingangsgrößen° Export der Ergebnisse (Parameter, Residuen, RMSE = root mean squared error)

Beispiel:[b,res] = nlinfit(Schokvm(:,1:2),Schokvm(:,6),‘nilifun‘,[1 1 1]);- - - - - - - - - -unter nilifun.m sei dabei untenstehende Datei abgelegt, die folgenden nichtlinearenZusammenhang zwischen der Ausgangsgröße y und dem zweidimensionalen Eingangs-größenvektor x beschreibt:

function y = nilifun(bstart,x);y = exp(bstart(1) * x(:,1).*x(:,2)+ bstart(2)*x(:,2)) ./ ( x(:,1) + bstart(3)* x(:,2));

1.7. Clusteranalyse

* Berechnung von Abstandsmaßen

- y = pdist(X,‘metric‘) Berechnung der paarweisen Abstände der Datensätzezueinander

X : n × m - Datenmatrixy : n(n-1)/2 × 1 - Vektor der paarweisen Abstände in der Reihenfolge (1,2), (1,3),

..., (1,n), (2,3), ..., (n-1,n)‘metric‘ = ‘Euclid‘: Euklidische Metrik (L ) - Standard -2

= ‘CityBlock‘: Manhattan-Metrik (L ) 1

= ‘Mahalanobis‘: Mahalanobis-Metrik

- squareform(y) zugehörige Matrixdarstellung

Beispiel: D = squareform(pdist(Schokvm(1:5,:)));% Berechnung der Distanzmatrix (Euklidische Metrik) für die ersten fünf Datensätze% der Schokoladen-Daten liefert folgendes Ergebnis:

D =

0 40.9530 181.2837 92.2334 50.7375 40.9530 0 141.2411 52.7421 12.0829 181.2837 141.2411 0 89.1020 134.1581 92.2334 52.7421 89.1020 0 47.2738 50.7375 12.0829 134.1581 47.2738 0

Page 10: MATLAB1-Funktionen und -Anwendungen · Achtung: Reihenfolge X, y beachten im Unterschied zu regress! Graphische Darstellungen zur interaktiven Kontrolle der schrittweisen Aufnahme

-10-

* KMEANS-Verfahren

- [cnr, cmw, var] = kmeans(X, k, ’replicates’, p, ’options’,...)

X: n × m - Datenmatrixk: Klassenanzahlcnr: Vektor der Klassennummerncmw: k × m - Matrix der Klassenschwerpunktevar: Vektor der Klassenvarianzenp: Anzahl der Wiederholungen mit verschiedenen zufälligen Startpartitionenoptions: verschiedene Einstellungen bzgl. der Ergebnisausgabe (s. Beispiel)

Beispiel:[cnr, cmw, sum]=kmeans(AUTO,3,'replicates',10,'options',statset('Display', 'final'))

% liefert folgende Ergebnisse:5 iterations, total sum of distances = 24.84624 iterations, total sum of distances = 24.84627 iterations, total sum of distances = 24.84625 iterations, total sum of distances = 24.846211 iterations, total sum of distances = 24.846212 iterations, total sum of distances = 24.84625 iterations, total sum of distances = 24.84625 iterations, total sum of distances = 24.84626 iterations, total sum of distances = 24.84625 iterations, total sum of distances = 24.8462

cnr = 3 3 1 3 3 1 3 3 3 3 3 1 3 3 3 2 2 2 2 2

Page 11: MATLAB1-Funktionen und -Anwendungen · Achtung: Reihenfolge X, y beachten im Unterschied zu regress! Graphische Darstellungen zur interaktiven Kontrolle der schrittweisen Aufnahme

-11-

cmw = 4.8333 2.8667 3.8667 3.3333 2.2600 5.4000 3.9200 5.4600 2.1083 3.4417 3.9417 3.7000

var = 4.8667 5.2120 14.7675

* Agglomerative Clusteranalyse

- Z = linkage(y,‘method‘) Erzeugen eines hierarchischen Clusterbaumes

y: Abstandsvektor wie oben angegebenZ: (n-1) x 3-Matrix, wobei die ersten beiden Spalten die Nummern der auf jeder

Hierarchiestufe verschmelzenden Klassen enthalten, die dritte Spalte das zu-gehörige Abstandsniveau der beiden Klassen. Die neu entstehenden Klassenwerden dabei von n+1 beginnend durchnumeriert.

´method‘ = ‘single‘: Single-Linkage-Verfahren ( Standard ) = ‘complete‘: Complete-Linkage-Verfahren = ‘average‘: Average-Linkage-Verfahren = ‘centroid‘: Centroid-Verfahren = ‘ward‘: Ward-Verfahren

- [H,T] = dendrogram(Z,p) Dendrogrammdarstellung

Z: Hierarchischer Clusterbaum wie oben angegebenp: Anzahl der maximal angezeigten letzten Hierarchieebenen (Standard: 30);

für p = 0 werden alle Hierarchieebenen angezeigt.H: (n-1) x 1-Vektor der Linien-Handles im DendrogrammT: (n-1) x 1-Vektor der Klassennummern der Datenmatrix in der p-ten Hierarchie-

ebene

Beispiel: Z = linkage(pdist(Auto),‘complete‘) % liefert folgende Ergebnisse:

Z = 7.0000 8.0000 0.1732 10.0000 15.0000 0.5477 21.0000 14.0000 0.5916 1.0000 2.0000 0.6083 23.0000 11.0000 0.7071 16.0000 17.0000 0.7141 4.0000 5.0000 0.7937 18.0000 19.0000 1.0296

Page 12: MATLAB1-Funktionen und -Anwendungen · Achtung: Reihenfolge X, y beachten im Unterschied zu regress! Graphische Darstellungen zur interaktiven Kontrolle der schrittweisen Aufnahme

-12-

22.0000 13.0000 1.1269 25.0000 9.0000 1.3304 27.0000 29.0000 1.6155 6.0000 12.0000 1.6217 28.0000 20.0000 1.7029 26.0000 33.0000 2.0640 31.0000 30.0000 2.2226 3.0000 32.0000 2.8036 24.0000 35.0000 3.0183 37.0000 36.0000 4.9295 38.0000 34.0000 6.4552

[H,T] = dendrogram(Z,10) % zeichnet das Dendrogramm für die % letzten 10 Hierarchiestufen und liefert:

T = 1 1 3 4 4 6 7 7 7 10 7 2

10 7 10 5

Page 13: MATLAB1-Funktionen und -Anwendungen · Achtung: Reihenfolge X, y beachten im Unterschied zu regress! Graphische Darstellungen zur interaktiven Kontrolle der schrittweisen Aufnahme

-13-

5 8 8 9

f = find(T==10) % liefert die zur Klasse 10 gehörigen Datensatz-% nummern:

f = 101315

- C = cluster(Z,anz) erzeugt die Klassenstruktur einer ausgewähltenHierarchieebene

Z: hierarchischer Clusterbaum im Ergebnis der Linkage-Funktionanz: Klassenanzahl (anz >= 2)C: n x 1 - Vektor der Klassennummern der anz-Klassenlösung

Beispiel: C = cluster(Z,3);f2 = find(C==2) % liefert

f2 = 3612

1.8. Diskriminanzanalyse

- class = classify(daten, trainingsdaten,cnr)

daten: p × m - Matrix der Teststichprobetrainingsdaten: n × m - Matrix der Lernstichprobecnr: Vektor der Klassennummernclass: Vektor der prognostizierten Klassennummern der Teststichprobe

Page 14: MATLAB1-Funktionen und -Anwendungen · Achtung: Reihenfolge X, y beachten im Unterschied zu regress! Graphische Darstellungen zur interaktiven Kontrolle der schrittweisen Aufnahme

-14-

© Copyright 1995-1998 by The MathWorks, Inc.1

2. Die GUI-Tools der Fuzzy-Logic-Toolbox

Im folgenden sollen die wichtigsten Komponenten, die „Graphical user interface (GUI-) tools“,zum Erstellen von Fuzzy-Produktionsregelsystemen (fuzzy inference systems) erläutert werden.Die Beschreibungen orientieren sich am Fuzzy Logic Toolbox User´s Guide und werden anhand1

des dort verwendeten Beispiels eines Fuzzy-Systems für die Trinkgeldhöhe (tip) in Abhängigkeitvom Bedienservice (service) und der Speisenqualität (food) vorgenommen.

2.1. Der FIS-Editor

Der Aufruf des FIS-Editors erfolgt entweder aus den anderen GUI-Tools oder über den Befehlfuzzy oder fuzzy name (bzw. fuzzy(‘name‘) ), wobei name.fis ein bereits in einem Suchpfadexistierendes Fuzzy-Inferenzsystem ist. Ist name eine FIS-Variable im Workspace, so erfolgt derAufruf mit fuzzy(name). Das nachfolgende Bild erscheint nach Eingabe von fuzzy tipper.

Input-Variablen Systemname Output-Variable (Doppelklick öffnet (Doppelklick öffnet (Doppelklick öffnet Membership-Function-Editor) Rule-Editor) Membership-Function-Editor)

Pop-up-Menüs zur Statusanzeige Editierfeld für die Auswahl der Inferenz- und Namen der Input- und Defuzzifizierungsmethoden Outputvariablen

Page 15: MATLAB1-Funktionen und -Anwendungen · Achtung: Reihenfolge X, y beachten im Unterschied zu regress! Graphische Darstellungen zur interaktiven Kontrolle der schrittweisen Aufnahme

-15-

Über den Menüpunkt File in der Kopfzeile kann ein neues FIS-System (Mamdani- oder Sugeno-System) angelegt werden, und es können FIS-Systeme (Datei mit Erweiterung .fis) importiertoder exportiert werden. Im Menüpunkt Edit können Variablen gelöscht oder hinzugefügt sowieMembership-Function-Editor (2.2.) und Rule-Editor (2.3.) aktiviert werden. Über View könnenRule-Viewer (2.4.) und Surface-Viewer (2.5.) aufgerufen werden.

2.2. Der Membership-Function-Editor

Der Aufruf des Membership-Function-Editors erfolgt in der Regel aus den anderen GUI-Toolsoder über den Befehl mfedit oder mfedit name (bzw. mfedit(‘name‘) ), wobei name.fis einbereits in einem Suchpfad existierendes Fuzzy-Inferenzsystem ist. Ist name eine FIS-Variable imWorkspace, so erfolgt der Aufruf über mfedit(name). Das nachfolgende Bild erscheint nachDoppelklick auf die Input-Variable service im oben abgebildeten FIS-Editor.

Variablenpalette Anzeige der Zugehörigkeitsfunktionen (Auswahl durch Anklicken) der aktuellen Variable

(Auswahl durch Anklicken)

Editierfelder zur Änderung von Editier- bzw. Auswahlfenster für Wertebereich und dargestelltem Name, Typ und Parameter der Bereich der aktuellen Variablen ausgewählten Zugehörigkeitsfunktion

Page 16: MATLAB1-Funktionen und -Anwendungen · Achtung: Reihenfolge X, y beachten im Unterschied zu regress! Graphische Darstellungen zur interaktiven Kontrolle der schrittweisen Aufnahme

-16-

Für die Zugehörigkeitsfunktionen stehen verschiedene Typen zur Verfügung, z. B. Dreiecks-funktionen (trimf), Trapeze (trapmf), Gausskurven (gaussmf, gauss2mf) und andere. Die Formder ausgewählten Zugehörigkeitsfunktion kann neben der Änderung über die Editierfelder auchüber das Ziehen mit dem Mauszeiger verändert werden. Die Menüpunkte File und View in der Kopfzeile entsprechen denen im FIS-Editor. Im Menü-punkt Edit können Variablen und Zugehörigkeitsfunktionen gelöscht oder hinzugefügt sowieFIS-Editor (2.1.) und Rule-Editor (2.3.) aktiviert werden.

2.3. Der Rule-Editor

Der Aufruf des Rule-Editors erfolgt in der Regel aus den anderen GUI-Tools oder über denBefehl ruleedit oder ruleedit name (bzw. ruleedit(‘name‘) ), wobei name.fis ein bereits in einemSuchpfad existierendes Fuzzy-Inferenzsystem ist. Ist name eine FIS-Variable im Workspace, soerfolgt der Aufruf über ruleedit(name). Das nachfolgende Bild erscheint nach Aufruf des Rule-Editors zum angegebenen Beispiel.

Auswahlmenüs für die Werte der Liste der aktuellen Regeln Input- und Outputvariablen

Wahl des Wichtungsfaktor Negationsschalter Buttons zum Hinzufügen, Verknüpfungs- Löschen oder Ändern von Operators Regeln

Page 17: MATLAB1-Funktionen und -Anwendungen · Achtung: Reihenfolge X, y beachten im Unterschied zu regress! Graphische Darstellungen zur interaktiven Kontrolle der schrittweisen Aufnahme

-17-

Die Menüpunkte File und View in der Kopfzeile entsprechen denen im FIS-Editor. Im Menü-punkt Edit können FIS-Editor (2.1.) und Membership-Function-Editor (2.2.) aktiviert werden.Im Menüpunkt Option können die Sprache der Regelsyntax (englisch, deutsch, französisch) unddas Format der Regeldarstellung ausgewählt werden.

2.4. Der Rule-Viewer

Der Aufruf des Rule-Viewers erfolgt in der Regel aus den anderen GUI-Tools oder über denBefehl ruleview oder ruleview(‘name‘), wobei name.fis ein bereits in einem Suchpfad existieren-des Fuzzy-Inferenzsystem ist, bzw. ruleview(name), falls name eine FIS-Variable im Workspaceist. Das nachfolgende Bild erscheint nach Aufruf des Rule-Viewers zum angegebenen Beispiel.

Anzeige des Erfülltheitsgrades der Regel- Anzeige des Erfülltheitsgrades des Inputs für jede Regel; die Linien zeigen Regel-Outputs für jede Regel den aktuellen Wert der Input-Variablen

Editierfeld zur Eingabe Statuszeile Buttons zum Aggregierter Output; der Werte der Input- Verschieben der die Linie zeigt den Variablen Plots defuzzifizierten

Wert

Page 18: MATLAB1-Funktionen und -Anwendungen · Achtung: Reihenfolge X, y beachten im Unterschied zu regress! Graphische Darstellungen zur interaktiven Kontrolle der schrittweisen Aufnahme

-18-

Jede Zeile der Plots repräsentiert eine Regel. Beim Anklicken einer Zeilennummer erscheint dieentsprechende Regel in der Statuszeile. Die Werte der Input-Variablen können neben derEingabe über das Editierfeld auch über das Verschieben der aktuellen Werte-Linien mit demMauszeiger verändert werden.Der Menüpunkt File in der Kopfzeile entspricht dem im FIS-Editor. Im Menüpunkt Edit könnenFIS-Editor (2.1.), Membership-Function-Editor (2.2.) und Rule-Editor (2.3.) aktiviert werden;im Menüpunkt View der Surface-Viewer (2.5.). Im Menüpunkt Option kann das Format derRegeldarstellung ausgewählt werden.

2.5. Der Surface-Viewer

Der Aufruf des Surface-Viewers erfolgt in der Regel aus den anderen GUI-Tools oder über denBefehl surfview oder surfview(‘name‘), wobei name.fis ein bereits in einem Suchpfad existieren-des Fuzzy-Inferenzsystem ist, bzw. surfview(name), falls name eine FIS-Variable im Workspaceist. Das nachfolgende Bild erscheint nach Aufruf des Surface-Viewers zum angegebenenBeispiel.

3D-Darstellung des Outputs in Abhängigkeit von einem oder zweiausgewählten Inputs ( Mit der Maus können die Achsen rotieren! )

Popup-Menüs Editierfelder Werteeingabe für Popup-Menüzur Auswahl der für die Gitter- nicht dargestellte zur Auswahl desInputs dichte Inputs Outputs

Page 19: MATLAB1-Funktionen und -Anwendungen · Achtung: Reihenfolge X, y beachten im Unterschied zu regress! Graphische Darstellungen zur interaktiven Kontrolle der schrittweisen Aufnahme

-19-

Die Menüpunkte File und Edit in der Kopfzeile entsprechen denen im Rule-Viewer. Im Menü-punkt View kann der Rule-Viewer (2.4.) aktiviert werden. Im Menüpunkt Option können Plot-Optionen (Surface, Mesh, Contour, ...) und die Farbpalette festgelegt werden.

2.6. Der ANFIS-Editor

Im ANFIS-Tool (adaptive neuro-fuzzy inference system) können Fuzzy-Produktionsregel-systeme für die datengestützte Modellierung entwickelt werden. Bei gegebener Datenmatrixwird ein Fuzzy-Inferenzsystem (FIS) aufgebaut, bei dem die Parameter der Zugehörigkeits-funktionen in einem Lernverfahren an die Daten angepasst werden. Für die Optimierung werdendie aus den Techniken der Neuronalen Netze bekannten Verfahren des Backpropagation-Algo-rithmus (auch in Kombination mit der Methode der kleinsten Fehlerquadrate) eingesetzt. Gegenüber dem FIS-Modul hat ANFIS folgende Beschränkungen: - nur Systeme vom Sugeno-Typ nullter oder erster Ordnung möglich

(Regeloutputs: Konstanten oder lineare Funktionen in den Inputs) - Single-Output-Systeme - gewichteter Mittelwert als Defuzzifizierungsmethode - Wichtungsfaktor aller Regeln ist Eins.

Die Datenmatrix (File mit Standarderweiterung .dat) muss die Daten in üblicher Form enthalten,in den ersten Spalten die Eingangsgrößen; die letzte Spalte ist zwingend die Ausgangsgröße.Gegebenenfalls sollte eine Aufteilung in Teststichprobe und Lernstichprobe erfolgen, um dieGüte des Modells bewerten zu können.

Achtung ! Die Anzahl der Optimierungsparameter hängt von der Anzahl der Eingangs-größen, der Anzahl ihrer Werte (Zugehörigkeitsfunktionen) und vom Typ derZugehörigkeitsfunktion (Anzahl der benötigten Parameter) ab. So kann schnellein äußerst hochdimensionales Optimierungsproblem entstehen. Beispiel: - nur 3 Eingangsgrößen mit je 3 Werten, beschrieben über Trapeze,

- 1 Ausgangsgröße als lineare Funktion - ergeben 144 Parameter, nämlich

3 x 3 x 4 = 36 nichtlineare für die Beschreibung der Trapeze und3 x 3 x 3 x (3+1) = 108 lineare für die Sugeno-Ausgangsfunktionder 3 x 3 x 3 = 27 Regeln (jede mögliche Kombination der Ein-gangsgrößenwerte ergibt eine Regel).

Der Aufruf des ANFIS-Editors erfolgt über den Befehl anfisedit oder anfisedit name (bzw.anfisedit(‘name‘) ), wobei name.fis ein bereits in einem Suchpfad existierendes, für ANFISgeeignetes Fuzzy-Inferenzsystem ist. Ist name eine entsprechende FIS-Variable im Workspace,so erfolgt der Aufruf mit anfisedit(name).

Das nachfolgend gezeigte Bild erscheint nach Eingabe von anfisedit und dem Einlesen derTrainingsdaten. Es handelt sich dabei um ein einfaches Beispiel aus der Fuzzy-Toolbox mit 25Datensätzen und einer Einflussgröße.

Page 20: MATLAB1-Funktionen und -Anwendungen · Achtung: Reihenfolge X, y beachten im Unterschied zu regress! Graphische Darstellungen zur interaktiven Kontrolle der schrittweisen Aufnahme

-20-

Plotfeld mit Anzeige Wahl der graphischen Anzeigeder Outputs der FIS-Struktur

Laden der Daten Erzeugen einer Editierfelder für Auswahl dernach Auswahl von FIS-Struktur Fehlerschranke Optimierungs-Typ und Quelle (Untermenü) und Anzahl der methode

Lernschritte

Die Menüpunkte File, Edit und View in der Kopfzeile entsprechen denen im FIS-Editor. Es istzu beachten, dass nur FIS-Strukturen geladen werden können, die den angegebenen Beschrän-kungen von ANFIS genügen. In der Regel wird der Ablauf der Modellierung aber mit dem Laden der Daten (Trainingsdaten)beginnen und die zugehörige FIS-Struktur im Editor interaktiv entworfen. Dies geschieht infolgenden Schritten:

- Auswahl der Anfangspartitionierung der Eingangs- und Ausgangsvariablen durch Wahlvon * Grid Partition, die gleichabständige Aufteilung, oder

* Subtractive Clustering, eine natürliche Gruppierung, die aus den Datenmittels eines einfachen Clusteranalyseverfahrens gewonnen wird. Die imUntermenü abgefragten Parameter sollten dabei mit ihren Standardwertenübernommen werden.

Page 21: MATLAB1-Funktionen und -Anwendungen · Achtung: Reihenfolge X, y beachten im Unterschied zu regress! Graphische Darstellungen zur interaktiven Kontrolle der schrittweisen Aufnahme

-21-

- Aufruf des Untermenüs zum Erzeugen der FIS-Struktur über den Generate FIS...-Button. Es erscheint folgendes Bild:

Hier können die Anzahl der Zugehö-rigkeitsfunktionen für jede Input-Va-riable (hier 3 ZGF für die eine Varia-ble), ihr Typ (hier Dreiecksfunktio-nen) und der Typ der Outputfunktion(hier eine Konstante) festgelegt wer-den.

Nach der Generierung der FIS-Struktur kann diese durch Anwahldes Buttons Structure im ANFIS-Editor angezeigt werden. Für dasangegebene Beispiel ergibt sich dannfolgendes Bild:

Die Verknüpfungsoperatoren derRegeln sind an den unterschiedlichenFarben der Knoten (blau: AND, rot:OR) bzw. Verbindungslinien (grün:NOT) zu erkennen. Beim Anklickeneines Knotens wird die Systemgrößeangezeigt, die er in der Struktur sym-bolisiert (z.B. Input1, Mf 3 für denweißen Knoten links unten).

Danach schließt sich die Lernphase des Optimierungsalgorithmus an. Dies geschieht in folgen-den Schritten:

- Auswahl des Optimierungsalgorithmus (hybrid oder backpropagation) - Eingabe der Fehlerschranke (Null empfohlen) - Eingabe der Anzahl der Lernschritte - Anklicken des Train Now -Buttons

Page 22: MATLAB1-Funktionen und -Anwendungen · Achtung: Reihenfolge X, y beachten im Unterschied zu regress! Graphische Darstellungen zur interaktiven Kontrolle der schrittweisen Aufnahme

-22-

Danach wird im Plot-Fenster des ANFIS-Editors der Optimierungsfehler während des Lern-prozesses graphisch dargestellt. Wenn sich der Fehler nicht mehr signifikant verringert, sollteder Lernvorgang beendet werden.Durch Anklicken des Test Now -Buttons wird nun die Testphase des Fuzzy-Produktions-regelsystems aktiviert. Für die oben angegebenen Einstellungen ergibt sich nach 160 Lern-schritten zum Beispiel folgendes Bild:

Danach können z.B. Testdaten geladen, und das Fuzzysystem kann auf diese angewendetwerden.Bei nicht befriedigender Übereinstimmung kann der Lernvorgang wiederholt werden, ggf. isteine neue FIS-Struktur zu generieren.

Vor der Bearbeitung eines neuen Problems ist der ANFIS-Editor neu aufzurufen; ein Betätigender Clear-Schalter reicht dafür nicht.