Grafik in MATLAB

Ein Kompendium


Fachbuch, 2011

169 Seiten


Leseprobe


Inhaltsverzeichnis

1 Was ist MATLAB

2 Grafische Objekte
2.1 Einführung
2.2 Grafische Objekte und ihre Properties
2.3 Setzen von Properties
2.3.1 Setzen in der Parameterliste
2.3.2 Setzen mit spezieller Funktion
2.3.2.1 Die Property-List-Methode
2.3.2.2 Die Cellarray-Methode
2.3.2.3 Die Struktur-Methode
2.3.3 Interaktive Methoden
2.4 Spezielle Funktionen
2.4.1 Abfragen von Properties
2.4.2 Suche nach Objekten
2.4.3 Rücksetzen von Properties
2.5 Klassen von Properties
2.6 Darstellung von Properties in dieser Dokumentation
2.7 Gemeinsame Properties
2.8 Ablauf der Erzeugung grafischer Objekte
2.8.1 Allgemeines
2.8.2 Leeren der Eventqueue
2.9 Darstellung grafischer Objekte
2.10 Kopieren von Objekten
2.11 Verbinden von Objekt-Properties

3 Objekten zugeordnete Funktionen
3.1 Allgemeine Form der Funktionsvereinbarung
3.2 Button-Down Funktion
3.3 Delete Funktion
3.4 Create-Funktion
3.5 Contextmenu

4 Farbe in Matlab
4.1 Einzelfarben
4.2 Colormaps
4.2.1 Definition
4.2.2 Darstellung der Colormap
4.2.3 Einstellung der Colormap
4.2.4 Verändern einer Colormap
4.2.4.1 Verändern der Helligkeit
4.2.4.2 Dynamische Veränderung der Colormap
4.2.4.3 Colormap-Editor
4.3 Spezielle Grau-Colormap
4.4 Fixed Colormap
4.5 Weitere Farbcodierungen
4.5.1 HSV-Darstellung
4.5.2 NTSC-Darstellung
4.5.3 CMYK-Darstellung
4.5.4 Umrechnungsprogramme

5 Root-Objekt
5.1 Allgemeines
5.2 Root-Properties
5.3 Echofunktion
5.4 DiaryFunktion

6 Figure-Objekt
6.1 Einführung
6.2 Funktionen
6.3 Properties
6.4 Pointer

7 Axes-Objekt
7.1 Axes
7.1.1 Erzeugung
7.2 Subplots
7.3 Achsen
7.3.1 Sichtbarkeit
7.3.2 Achsenskalierung
7.3.3 Lage der Achsen
7.3.4 Teilung der Achsen
7.3.5 Markierung der Achsen
7.3.6 Beschriftung der Achsen
7.3.7 Gitter
7.3.8 Zeichnungsbeschriftung
7.3.9 Properties für Linien und Beschriftungen
7.3.10 Weitere Properties
7.4 Seitenverhältnis (Aspect ratio)
7.5 Verbinden von Axes
7.6 Multi-Axes
7.7 Farbfestlegung bei Axes
7.8 Farbumschaltung beim Drucken von Grafik-Objekten
7.9 Cursor-Position
7.10 Koordinatenumrechnung
7.11 Entfernen von Objekten, Löschen von Axes

8 Texte und Text-Objekt
8.1 Texte
8.2 Text-Objekt
8.3 Text-Properties
8.4 Eine Funktion zur Einstellung des Schriftbildes
8.5 Latax-Font

9 Plotfunktion, Line-Objekt
9.1 Grundlagen
9.1.1 Funktionen mit einer unabhängigen Variablen
9.1.2 Funktionen mit zwei unabhängigen Variablen
9.2 Plot-Funktionen
9.2.1 Plotfunktionen für zweidimensionale Darstellungen
9.2.2 Plotfunktion für dreidimensionale Darstellungen
9.2.3 Plotten zweidimensionaler Funktionen in logarithmischer Achs- teilung
9.2.4 Line-Properties
9.3 Die Funktion fplot

10 Spezielle Plots
10.1 Plotten zeitdiskreter Signale
10.2 Plotten von Stufenfunktionen
10.3 Area-Plots
10.4 Bar-Plot
10.5 Histogramm-Plots
10.5.1 Plotten der Dichtefunktion
10.5.2 Plotten der Verteilungsfunktion
10.6 Scatter-Funktionen
10.6.1 Zweidimensionale Darstellung
10.6.2 Dreidimensionale Darstellung
10.6.3 Kombination von Scatter- und Dichtefunktion-Plots
10.7 Plotten von Fehlerbalken
10.8 Berechnung der komplexen Hülle einer Punktmenge

11 Polardarstellungen
11.1 Mathematische Grundlagen
11.2 Funktionen

12 Delaunay-Triangulation und Voronoi-Diagramm
12.1 Delaunay-Triangulation
12.1.1 Begriffsfestlegung
12.1.2 Berechnung der Triangulation
12.1.3 Darstellung der Triangulation
12.2 Voronoi-Diagramm
12.2.1 Begriffsfestlegung
12.2.2 Berechnung und Darstellung des Voronoi-Diagramms

13 Darstellungen von Funktionen mit zwei unabhängigen Variablen
13.1 Mathematische Grundlagen
13.1.1 Einführung
13.1.2 Berechnung über äquidistantem Punktraster
13.1.3 Interpolation
13.1.4 Berechnung über beliebiger Punktverteilung
13.1.5 Berechnung von Contourlinien
13.1.6 Berechnung des Gradienten
13.1.7 Feldlinien
13.2 Surface-Objekt
13.2.1 Einführende Bemerkungen
13.2.2 Surface-Plot
13.2.3 Die Surface-Properties
13.2.4 Colormap bei Surface-Objekten
13.2.5 Textur für Oberflächen von Surfaceplots
13.2.6 Verborgene Linien
13.2.7 Transparenz des Surface-Objekts
13.2.8 Verbindung mit anderen Objekten
13.3 Spezielle Darstellungen
13.3.1 Contourlinien in zwei Dimensionen
13.3.2 Contourlinien in drei Dimensionen
13.3.3 Gradientenberechnung und Quiverdarstellungen
13.3.4 Berechnung und Darstellung von Feldlinienin in zwei Dimensionen
13.3.5 Berechnung der Flächennormalen
13.4 Kombinationsfunktionen

14 Patch-Objekte
14.1 Grundlegende Begriffe
14.2 Darstellungsmethoden
14.2.1 Polygon-Darstellung
14.2.2 Mehrfacetten-Darstellung
14.2.3 Umrechnung der Darstellungsarten
14.2.4 Transparenz des Patch-Objekts
14.2.5 Verbindung mit anderen Objekten
14.3 Properties für das Patchobjekt
14.4 Reduzierung der Faces

15 Image-Objekte
15.1 Einführung in das Thema
15.2 Digitale Bilder
15.2.1 Vorbemerkungen
15.2.2 Grundlegende Begriffe
15.2.3 Digitalisierung ortskontinuierlicher Bilder
15.3 Ausschneiden und Zoomen eines Bildes
15.4 Reduktion und Erhöhung der Auflösung
15.5 Bildtypen
15.5.1 Schwarz-Weiß- oder Intensity-Image (INT-Bilder)
15.5.2 Binär-Bilder oder Binary-Image(BIN-Bild)
15.5.3 Farb-Bilder
15.5.3.1 Echtfarben-Bild oder Truecolor-Images (RGB-Bild))
15.5.3.2 Index-Bild oder Indexed-Images (IND-Bild)
15.6 Umrechnung der Bildtypen
15.7 Matlabinterne Speicherung von Bildern
15.8 Portable Bildspeicherung
15.9 Darstellung von Bildern
15.10Bereitstellen von Bildinformation
15.11Figure- und Axesabzüge
15.12Zusammenfügen von Bildern zu übergeordneten Einheiten
15.13Image-Properties
15.14Einige technische Details
15.14.1 Scannen
15.14.2 Digitale Fotographie
15.14.3 Bildschirm

16 Dreidimensionale Skalarfelder und ihre Darstellung
16.1 Grundlagen
16.2 Darstellung von Skalarfeldern durch Slices
16.2.1 Erzeugung achsenorthogonaler Slices
16.2.1.1 Flächen-Slices
16.2.1.2 Contourslices
16.2.2 Erzeugung ebener Flächen-Slices beliebiger Lage
16.3 Darstellung von Skalarfeldern durch Niveauflächen und Begrenzungen
16.3.1 Erzeugung der Niveauflächen
16.3.2 Einfärbung von Niveauflächen
16.3.3 Erzeugung von Begrenzungen
16.3.4 Bildung von Ausschnitten
16.3.5 Verbesserung der Darstellung
16.3.5.1 Benutzung von Flächennormalen
16.3.5.2 Reduktion der Patch-Faces
16.3.5.3 Glättung
16.4 Verringerung des Speicherbedarfs
16.5 Hilfsprogramm
16.6 Meshgrid für drei Dimensionen

17 Dreidimensionale Vektorfelder und ihre Darstellung
17.1 Grundlagen
17.2 Feldlinien und verwandte Darstellungen
17.2.1 Berechnungsmethode
17.2.2 Feldlinien
17.2.3 Streamtubes
17.2.4 Streamribbons
17.3 Streamparticles
17.4 Coneplots
17.5 Hilfsfunktion

18 Darstellung von Graphen
18.1 Allgemeine Graphen
18.2 Erzeugung eines Baum-Graphen

19 Rechteck-Objekte
19.1 Erzeugung von Rechtecken
19.2 Aufziehen von Rechtecken mit der Maus
19.3 Bewegen von Rechtecken

20 Vermessung von Objekten

21 Bewegung von Objekten
21.1 Grundsätzliches
21.2 Translatorische Bewegung von Objekten
21.2.1 Translation eines Objekts durch Berechnung
21.2.2 Translation eines Objekts mittels Matlabfunktion
21.3 Rotation von Objekten
21.4 Beliebige Bewegungen im Figure
21.5 Zoomen

22 Licht-Objekt
22.1 Einfluss von Axes-Properties
22.2 Einfluss von Surface- oder Patch-Properties
22.3 Zusätzliches Light-Objekt

23 Kamera-Objekt
23.0.1 Grundlegende Begriffe
23.0.2 Camera-Properties
23.0.3 Kopplung eines Light-Objekte mit einem Kamera-Objekt
23.0.4 Unterprogramme für spezielle Kamerabewegungen
23.1 Kombinationsfunktion

24 Transparenz von Surface- und Patch-Objekten
24.1 Übersicht
24.2 Alpha-Daten
24.2.1 AlphaData-Matrix für Surface- und Image-Objekte
24.2.2 Face-Vertex-AlphaData-Matrix für Patch-Objekte
24.3 Alphamap
24.4 Übergang von AlphaData zur Transparenz

25 GUI-Objekte
25.1 Uicontrol-Objekt
25.2 Uipanel-Objekt
25.3 Änderung des Toolbars und des Menubars eines Figures
25.3.1 Uimenu-Objekt
25.3.2 Erzeugen eines Figure-Toolbar
25.3.3 Uitoolbar-Objekt
25.3.4 Uipushtool-Objekt
25.3.5 Uitoggletool-Objekt

26 Dlg-Boxes
26.1 Dialog-Box
26.2 Message-Box
26.3 Abfrage-Box
26.4 Menu-Box
26.5 Popup-Box
26.6 Eingabe-Box
26.7 Weitere Dialogboxes

27 Grafische Ein- und Ausgabe
27.1 Grafische Eingabe von Koordinaten in einem Axes
27.2 Interaktive Ausgabe von Text

28 Kommentierung von Objekten
28.1 Annotation-Objekte
28.2 Legend-Objekt

29 Erzeugung von Filmen
29.1 Einführung
29.2 Erstellen von Filmen
29.3 Abspielen von Filmen

30 Renderer
30.1 Überblick
30.2 Kurzbeschreibung der Renderer
30.2.1 Painters
30.2.2 Z-Buffer
30.2.3 OpenGL
30.3 Properties zur Einstellung des Renderers

31 Sicherung von Figures
31.1 Ausgabe eines Figure
31.2 Speicherung des Figure

32 Einrichten des Startup-Files

34 Liste der Funktionen

1 Was ist MATLAB

MATLAB kann wie folgt charakterisiert werden:

- MATLAB ist die Abkürzung von MATrix LABoratory.
- MATLAB wurde von Cleve Moler in der Urversion geschrieben. - MATLAB ist ein Produkt der Firma The MathWorks.
- MATLAB ist eine weit verbreitete Programmiermethode für mathematische Berechnungen in der Technik.
- MATLAB ist ein Betriebssystem, eine Prorammiersprache und ein Visualisie- rungssystem in einem.
- MATLAB beinhaltet eine umfangreiche Programmbibliothek, die u.a. aus den LINPACK und EISPACK Projekten hervorgegengen ist.
- MATLAB erlaubt sowohl die Darstellung zwei- und dreidimensionaler farbiger Grafiken wie auch die Generierung von Panels zur Programmorganisation.

In dieser Schrift werden die grafischen Fähigkeiten von MATLAB zusammengestellt.

Professor Dipl.Ing. Helmut Roderer, geboren 1936 in Würzburg, studierte Rege- lungstechnik und technische Elektronik an der Technischen Universität Darmstadt. Ab 1964 arbeitete er in der Industrie, hauptsächlich bei der Dornier AG. Seit 1973 lehrt er an der Hochschule für angewandte Wissenschaften Würzburg-Schweinfurt das Fach Prozessdatenverarbeitung im Studiengang Informationstechnik.

2 Grafische Objekte

2.1 Einführung

- Die grafische Darstellung mathematischer Berechnungen als Bild ist genauso wichtig wie die Berechnung selbst.
- Ein Bild besteht in der Regel aus mehreren grafischen Objekten und erscheint auf dem Bildschirm in einem Fenster (Figure).
- In Matlab existiert daher ein vielfältiges System von Funktionen zur Darstel- lung und Veränderung existierender grafischer Objekte.
- Ein grafisches Objekt wird durch seinen Typ und seine Eigenschaften (Proper- ties) beschrieben.

2.2 Grafische Objekte und ihre Properties

- Der Typ eines grafischen Objekts wird durch Ablauf einer Erzeugungsfunktion H=ObjektTyp( Parameterliste) bestimmt. Dabei wird ein Objekt-Handle H geliefert. Mit diesem Handle wird ein Zugriff auf die Objekt-Properties ermöglicht.
- Man kann Properties einstellen und damit das Aussehen des Objekts beein- flussen.
- Objekte können Teil (Kind, Child) eines anderen grafischen Objekts (Vorfahr, Parent) sein.
- Vor der Erzeugung eines Objekts müssen alle Vorfahren erzeugt worden sein. Bei manchen Erzeugungsfunktionen wird diese Erzeugung, falls erforderlich, automatisch durchgeführt.
- Alle Properties kann man auch in MATLAB-Help studieren.

2.3 Setzen von Properties

Für alle Properties existieren Defaulteinstellungen. Diese gelten bis Properties neu gesetzt werden. Hierfür existieren mehrere Methoden.

2.3.1 Setzen in der Parameterliste

Über feste Funktionsparameter (Strings oder Zahlenwerte) der objekterzeugenden Funktion. Beispielsweise gilt

HP=plot(t,x,’r-*’)

Hier bestimmt der Stringparameter das Aussehen einer Kurve. Siehe z.B. die Beschreibung des Line-Objekts.

2.3.2 Setzen mit spezieller Funktion

2.3.2.1 Die Property-List-Methode

- Man definiert ein Propertyelement durch den PropertyName und den zugehöri- gen Propertyvalue. Letzterer kann ein numerischer Wert oder ein String sein.
- Es wird dann eine Propertylist definiert.
PropertyName1,Propertyvalue1,PropertyName2,Propertyvalue2, - Zur Einstellung der Properties ruft man set(H,Propertylist) Ist H ein Vektor, so werden die Properties in allen Objekten gesetzt.
- In Matlab existieren auch Funktionen die zwei Methoden in einem Funktions- aufruf anwenden. Beispielsweise gilt HP=plot(t,x,Propertylist).

2.3.2.2 Die Cellarray-Methode

- Man kann die Properties auch in einem Cellarray (CPN) zusammenfassen, wobei jede Cell einen PropertyNamen aufnimmt.
- Ebenso kann man in einem weiteren Cellarray (CPV) entsprechend die Pro- pertyvalues darstellen.
- Dann kann man die Properties einstellen: set(H,CPN,CPV)

2.3.2.3 Die Struktur-Methode

- In einer Struktur (st) sind der Propertyname auch der Fieldname. Der Pro- pertyvalue ist dann der zugehörige Wert.
- Nun lautet die Funktion:

set(H,st)

2.3.3 Interaktive Methoden

Es werden Methoden zur Property-Einstellung bei existierendem Objekt behandelt. Es bestehen mehrere Möglichkeiten.

- Mit den Funktionen

plotedit on

plotedit off

propedit(...)

propeditor(...)

kann man den Plot-Edit-Mode und die Propertyeditoren ein- oder ausschalten. Anstelle des Aufrufs von plotedit on kann man auch im Figure-Toolbar den Plotedit-Pfeil betätigen. Siehe hierzu auch MATLAB-Help.

- Ruft man im eingeschalteten Plot-Edit-Mode die Funktionen inspect

auf, so kann man mit der linken Maustaste ein Objekt anwählen.

- Für dieses Objekt erscheint ein Fenster. In diesem Fenster kann man die Ein- stellung aller Properties sehen und sie gegebenenfalls auch verändern.

- Mit Aufruf von

inspect(H)

inspect([H1,H2,...Hn])

wird direkt die Bearbeitung der Properties für das Objekt mit Handle H ermöglicht.

- Wird die Funktion mit einem Handlevektor aufgerufen inspect([H1,H2,...Hn])

so können nur die allen Objekten gemeinsamen Properties bearbeitet werden.

2.4 Spezielle Funktionen

2.4.1 Abfragen von Properties

- Aktuell eingestellte Properties eines Objekts liefert die Funktion:

Abbildung in dieser Leseprobe nicht enthalten

- Die setzbaren Properties eines Objekts und ihre möglichen Werte erhält man mit:

Abbildung in dieser Leseprobe nicht enthalten

Falls Ergebnis Strings sind, dann ein Cellarray.

2.4.2 Suche nach Objekten

- Handles von speziellen Objekten kann man sich beschaffen:

Abbildung in dieser Leseprobe nicht enthalten

O: Handle des Objektes, dessen CB gerade ausgeführt wird.

H: Handle wie bei gcbf().

- Die nachfolgenden Funktionen liefern Handles auf mehrere Objekte:

Abbildung in dieser Leseprobe nicht enthalten

2.4.3 Rücksetzen von Properties

- Mit der Funktion

reset(H)

H: Objekt-Handle

kann man Properties des Objekts mit Handle H, so sie Factory-Defaults haben, wieder mit diesem Wert belegen. Ansonsten werden sie gelöscht.

- Bei Figure-Objekten werden dei Properties Position, Units, Paperunits, Win- dowstyle nicht zurückgesetzt.

- Bei Axes-Objekten bleiben die Properties Position, Units erhalten.

2.5 Klassen von Properties

- Man kennt fünf Klassen von Properties, die nach Objektklassen gegliedert sind:

Abbildung in dieser Leseprobe nicht enthalten

- Wird nach einer Property gesucht, so werden die Klassen nach aufsteigender Nummer durchsucht. Tritt erstmalig eine Property auf, so wird diese benutzt.

- Behandlung der Factory-Properties.

- Will man Factory-Properties sehen so ruft man: s=get(0,’Factory’)

Alle Factory-Properties.

s=get(0,’FactoryObjectPropertyname’) Spezielle Factory-Property.

- Die Factory-Properties kann man nicht setzen.

- Man kann eine Property auf den Factory-Wert setzen: set(H,’Propertyname’,’factory’)

- Behandlung von Default-Properties.

- Für Default-Properties hat ein Element einer DefaultPropertylist folgen- des Aussehen:

...’DefaultObjektProperty’,Propertyvalue,...

Dabei ist Objekt entweder Axes, F igure oder Root.

- Default-Properties kann man sehen:

s=get(H,’Default’) s ist eine Struktur.

s=get(H,’DefaultObjectProperty’) Hier kann auch eine Liste stehen.

- Default-Properties kann man setzen: set(H,DefaultPropertylist)

H ist der Handle eines Axes-, Figure- oder Rootobjekts.

- Man kann eine Default-Property mit folgender Funktion entfernen: set(H,’DefaultObjectProperty’,’remove’)

H muss der Handle von Object sein. Im Aufruf kann auch eine Propertylist stehen.

2.6 Darstellung von Properties in dieser Doku-

mentation

In diesem Compendium werden Properties immer in einer der folgenden Formen angegeben:

Propname: Property, Propvalue: Alternative 1 |Alternative 2 |...|Alternative n Propname: Property, Propvalue: Datumsangabe

2.7 Gemeinsame Properties

Einige Properties existieren bei allen Objekten. Diese sind:

- Properties zur Aufnahme von Daten:

Propname: Tag, Propvalue: String

Propname: UserData, Propvalue: Beliebiges Datum. Empf ohlen: Struktur. - Zur Identifizierung von Objekten dienen:

Propname: Parent, Propvalue: Handle des Elterobjekts

Propname: Children, Propvalue: V ektor der Handle der Kinderobjekte Propname: Type, Propvalue: Objekt − T yp

- Begrenzungen für die Objektdarstellung sind: Propname: Visible, Propvalue: on|of f Propname: Clipping, Propvalue: on|of f

- Die Markierung von Objekten erfolgt mit:

Propname: SelectionHighLight, Propvalue: on|of f Propname: Selected, Propvalue: on|of f

Die erste Property ermöglicht die Selektierung, die mit der zweiten Property durchgeführt wird.

- Für die Erklärung der beiden Properties:

Propname: HandleVisibility, Propvalue: on|of f Propname: BusyAction, Propvalue: cancel|queue wird auf MATLAB -Help verwiesen.

2.8 Ablauf der Erzeugung grafischer Objekte

2.8.1 Allgemeines

Der Ablauf der Erzeugung von Grafik-Objekten auf dem Bildschirm unterliegt folgenden Regeln:

- Anweisungen, die zu einer Veränderung in einem Figure, führen werden nicht direkt ausgeführt.
- Diese Anweisungen umfassen auch Mausclicks und Cursoroperationen.
- Anweisungen erzeugen Events, die in einer Eventqueue zwischengespei- chert werden.
- Diese Eventqueue wird geleert, die Anweisungen werden ausgeführt und damit der Bildschirm verändert wenn bestimmte Ereignisse auftreten.

2.8.2 Leeren der Eventqueue

Die folgenden Funktionen leeren die Eventqueue, verändern also die dargestellten Objekte.

- Es existiert eine Funktion

Abbildung in dieser Leseprobe nicht enthalten

- Die Eventqueue wird immer geleert, wenn ein MATLAB -Prompt (>> in MCW) auftritt oder wenn ein figure-, ginput- oder ein getframe -Befehl aus- geführt wird.

- Das Auftreten von Eingabefunktionen wie input und keyboard verursacht eben- falls das Leeren der Eventqueue.

- Auch Funktionen, die ein Warten des Programms auf bestimmte Ereignisse auslösen leeren die Eventqueue. Diese sind:

- Zeitlich begrenztes oder unbegrenztes Warten erreicht man mit der Funk- tion

pause { t } Warten um t Sekunden.

Fehlt t: Warten bis eine Tastenbetätigung erfolgt.

- Das Warten auf die Betätigung einer Maustaste oder die Betätigung einer Taste mit

waitforbuttonpress

- Mit der Funktion

uiwait { (F, { timeout }) }

Fehlt Figure-Handle F, dann F=gcf.

Nach timeout Sekunden wird das Warten automatisch beendet. kann man warten. Mit der Funktion

uiresume(F)

kann man das Warten beenden.

- Die allgemeinste Funktion zum Warten auf ein Ereignis ist: waitfor(H, { ’PropertyName’ {,Propertyvalue }})

Das Warten wird beendet, wenn der angegebene Propertyvalue eingestellt wird.

Ist kein Propertyvalue angegeben, so wird das Warten beendet wenn die angegebene Property geändert wird.

Ist die Property für das Objekt nicht vorhanden, so wird nicht gewartet.

2.9 Darstellung grafischer Objekte

- Es ist von Bedeutung welche Objekte gemeinsam auf dem Bildschirm erschei- nen können.

- Das Root-, das Figure- und mindestens ein Axes-Objekt müssen auf dem Bild- schirm gleichzeitig erscheinen.

- Wieviele weiteren Objekte können gleichzeitig Children eines Axes-Objekt sein?

- Werden mehrere Objekte in einem oder mehreren Axes bei geleerter Event- queue dargestellt, so haben zwei Properties Einfluss auf das Aussehen:

- Zum einen ist dies die Figur-Property:

Propname: NextPlot, Propvalue: add|new|replace|replacechildren

- Zum anderen die gleichnamige Axes-Property:

Propname: NextPlot, Propvalue: add|replace|replacechildren

- Die Besprechung dieser Properties erfolgt weiter unten. - Weiter gibt es Funktionen:

- Begrenztes Setzen der Properties:

hold { (H) } Toggeln zwischen hold on und hold off

hold({ H },on)

hold({ H },off ) Defaulteinstellung

hold({ H },all)

Fehlt der Axes-Handle H, so ist H=gca

Bei all: wie on, hält auch Color- und LinestyleOrder.

- Der hold-Zustand bezieht sich auf ein Axes.

- Im Zustand hold on können beliebig viele Grafik-Objekte in einem Axes dargestellt werden.

- Im Zustand hold off werden vor der Darstellung eines Grafik-Objekts be- stehende Objekte gelöscht und die Axes-Properties auf ihre Defaultein- stellungen gebracht.

- Man kann den hold-Zustand auch abfragen: x=ishold

hold-Zustand: on bei x=1; off bei x=0.

- Für die Properties NextPlot gilt:

Abbildung in dieser Leseprobe nicht enthalten

- Andere Nextplot-Properties können ebenfalls mit Funktionen gesetzt werden:

Abbildung in dieser Leseprobe nicht enthalten

- Siehe das Demonstrationsprogramm DemoHold.m - Eine wesentliche Property

Propname: EraseMode, Propvalue: normal|none|xor|background

steuert ebenfalls das Erscheinungsbild eines Objekts. Bei der Besprechung der Text-, Line- und Patchobjekte wird dies demonstriert.

2.10 Kopieren von Objekten

- Zum Kopieren eines Objekts ruft man Hn=copyobj(H,P)

H: Vektor der Handles der zu kopierenden Objekte.

HP: Vektor der Handles der Parents der neuen Objekte. Hn: Vektor der Handles der neuen Objekte.

- In Abhängigkeit von den Längen der Handlevektoren gilt: 11

Abbildung in dieser Leseprobe nicht enthalten

2.11 Verbinden von Objekt-Properties

- Man kann dafür sorgen, dass gleiche Properties verschiedener Objekte mitein- ander verbunden sind. Siehe das Demonstrationsprogramm DemoLink.

- Ruft man

HL=linkprop(HO, { ’Propertyname1’, ’Propertyname2’, ... }) Der Vektor HO beinhaltet die Objekt-Handle.

Die {} beschreiben eine Zelle.

so werden die betreffenden Properties alle auf den Wert des Objekts mit Handle HO (1) eingestellt.

- Wird nun eine verbundene Property im Objekt mit Handle HO (1) geändert, so wird die Property in den anderen Objekten ebenfalls geändert.

- Man kann eine nichtverbundene Property in die Liste der verbundenen Pro- perties aufnehmen und entfernen:

Abbildung in dieser Leseprobe nicht enthalten

- Man kann auch ein neues Objekt mit Handle HOn in die Liste der Objekte mit verbundenen Properties aufnehmen:

Abbildung in dieser Leseprobe nicht enthalten

3 Objekten zugeordnete Funktionen

Es existieren Möglichkeiten grafischen Objekten Funktionen zuzuordnen. Diese können automatisch oder durch eine Mausbetätigung über dem Objekt ausgelöst werden.

3.1 Allgemeine Form der Funktionsvereinbarung

- Es muss eine Funktion vereinbart werden:

func(H,ev {,arg1,...,argn })

H ist der Handle des Objekts bei dem die Funktion wirken soll. ev ist eine nicht genutzte Variable.

arg1 bis argn sind Zusatzparameter, die auch entfallen können. @func ist der Handle der Funktion.

- Für die Zuordnung dieser Funktion zu einer Property gibt es zwei Möglichkei- ten:

- Wenn keine Zusatzparameter vorhanden sind ruft man: set(H,’FuncProp’,@Func)

- Wenn Zusatzargumente vorhanden sind ruft man:

set(H,’FuncProp’, { @Func,arg1,... argn })

Die Klammern { } beschreiben hier eine Zellendefinition.

3.2 Button-Down Funktion

- Wird über einem Grafikobjekt eine Maustaste betätigt so kann eine Funktion ausgeführt werden. Diese ist nach den oben dargelegten Regeln zu vereinbaren.

- Diese Funktion ist mit der ButtonDownFcn-Property des Objekts mit Handle H zu verknüpfen:

set(H,’ButtonDownFcn’,@Func)

set(H,’ButtonDownFcn’, { @Func,arg1,... argn })

- Die Wirksamkeit der Button-Down Funktion kann man mit einer Property an- oder abschalten:

Propname: HitTest, Propvalue: on|of f

Ist die Wirksamkeit für ein Objekts abgeschaltet, so wird die Button-Down Funktion eines eventuell darunterliegenden angeschalteten Objekts aktiviert.

- Mit der Property:

Propname: Interruptible, Propvalue: on|of f

kann man entscheiden ob eine Buttondown-Funktion von einer anderen Funktion unterbrochen werden kann oder nicht.

3.3 Delete Funktion

- Wird ein Grafikobjekt gelöscht so kann ebenfalls eine Funktion ausgeführt werden.

- Eine nach obigen Regeln erzeugte Funktion ist dafür mit der DeleteFcn-Property des Objekts zu verknüpfen:

set(H,’DeleteFcn’,@Func)

set(H,’DeleteFcn’, { @Func,arg1,... argn })

- Es existiert die Property:

Propname: BeingDeleted, Propvalue: on|of f

Diese Property ist on wenn die Deletefunktion ausgeführt wird.

3.4 Create-Funktion

- Bei der Erzeugung eines Objekts kann ebenfalls eine Funktion ausgeführt wer- den.

- Soll bei der Erzeugung eines Objekts eine Funktion ausgeführt werden muss man vereinbaren:

set(0,’DefaultxxxCreateFcn’,@Func)

set(0,’DefaultxxxCreateFcn’, { @Func,arg1,... argn }) xxx ist der Name des Objekts, z.B. root,line etc.

- Eine zweite Möglichkeit ist folgende:

H=xxx(Parameterliste,’CreateFcn’,@Func)

Die Create-Function wird also bei der Objekterzeugung mit dem Objekt ver- knüpft.

- Die Create-Funktion kann man löschen: set(0,’DefaultXXXCreateFcn’,’;’)

oder mit

set(H,’CreateFcn’,’;’)

3.5 Contextmenu

- Ein Contextmenu ist selbst ein graphisches Objekt mit einem Handle C.
- Man kann einem graphischen Objekt ein Contextmenu zuordnen. Dazu wird in der Property des Objekts der Handle des Contextmenues eingetragen:
Propname: UIContextMenu, Propvalue: C
- Wird über einem Objekt die rechten Maustaste betätigt, so wird das Context- menu ausgelöst.
- Es wird eine Liste von Labels angezeigt. Jedem Label kann ein Callback zu- geordnet werden.
- Die Callbacks dürfen keine Subfunktionen sein.
- Wird ein Label angklickt, so wird der Callback ausgeführt.
- Das Contextmenu kann mit folgendem Funktionsaufruf generiert werden: C=uicontextmenu;

set(L,’UiContextMenu’,C)

Contextmenu C dem Objekt L zuordnen

uimenu(C,’Label 1’,’Text 1’ {,’Callback’,cb1 }) uimenu(C,’Label 2’,’Text 2’ {,’Callback’,cb2 })

uimenu(C,’Label n’,’Text n’ {,’Callback’,cbn }) - Das Menu hat U iContextM enu -Properties.

4 Farbe in Matlab

Zur Ausgestaltung von Informationsdarstellungen benötigt man farbliche Mittel. Bei Displays ist die additive Farbbildung durch die drei Farbanteile Rot, Grün und Blau üblich. Man spricht von RGB-Farben.

4.1 Einzelfarben

- Erzeugung des Farbvektors.

- Bei der RGB-Darstellung wird ein Farbvektor f = [ R G B ] aus den

Farben Rot, Grün und Blau zur Festlegung der Farbe gebildet.

- Für jedes Element gilt

Abbildung in dieser Leseprobe nicht enthalten

- Auf diese Weise können sehr viele unterschiedliche Farben gebildet wer- den. Beispielsweise gilt für

Abbildung in dieser Leseprobe nicht enthalten

- Standardeinzelfarben

In MATLAB werden bei Anweisungen zur Informationsdarstellung oft bestimmte Einzelfarben benutzt. Eine Auswahl von Farben wird unter dem Namen Colorspec zusammengefaßt. Sie werden entweder als Farbvektor, als Name oder als Symbol dargestellt:

Abbildung in dieser Leseprobe nicht enthalten

- Propertyeinstellung.

Bei vielen Objekten können Farben für Properties definiert werden. Der jeweilige Property-Value kann aus

Abbildung in dieser Leseprobe nicht enthalten

- Farbfolgen.

Im Objekt Axes werden Farben zur Verfügung gestellt, die bei Erzeugung mehrerer Objekte durch eine Funktion (z.B. Plotfunktion) zur Unterscheidung benutzt werden. Diese m Farben können im aktuellen Axes mit der Funktion

set(gca,’ColorOrder’,m × 3 RGB-Matrix)

gesetzt werden.

- Dialogbox für Farbauswahl. Mit der Funktion

col=uisetcolor({ rgb }{,tit }) col: Rgb-Vektor.

rgb: RGB-Vektor zur Initialisierung. tit: Bezeichnung der Dialogbox.

kann man eine Farbe auswählen.

- Alle Einzelfarben können durch Helligkeitesteuerung noch verändert werden. Siehe hierzu einen späteren Abschnitt.

4.2 Colormaps

Zur Festlegung der Einfärbung von Objekten werden Colormaps benutzt.

4.2.1 Definition

- Eine Farbe wird als RGB-Zeilenvektor dargestellt.
- Colormaps sind n × 3 Matrizen. Jede Zeile ist ein RGB-Vektor. Jedem Zeilen- index entspricht somit eine Farbe.
- Der Aufbau einer Colormap ist willkürlich.
- Eine Colormap ist eine F igure − P roperty und gilt somit für alle Axes eines Figures.
- Für die Property gilt:

Propname: Colormap, Propvalue: hsv|autumn|bone|colorcube|cool|

copper|f lag|gray|hot|jet|lines|pink|spring|summer|white|winter

Der Propertyvalue stellt den Namen einer RGB-Matrix, abgkürzt f m, dar.

4.2.2 Darstellung der Colormap

- Durch Aufruf der Funktion H=colorbar

H ist der Colorbar-Handle.

kann man die Colormap im Figure sichtbar machen.

- Den Colorbar kann man auch durch Betätigung des Elements Insert Colorbar im Figure-Toolbar an- und abgeschaltet werden.

- Die Lage des Colorbar relativ zu einem Axes ist ebenfalls eine Property.

Propname: Location, Propvalue: N orth|South|East|W est|N orthOutside| SouthOutside|EastOutside|W estOutside

Diese kann man einstellen mit

colorbar(’LocName’)

set(gcf,’Location’,’LocName’)

- Die Einstellung der Lage des Colorbar kann auch interaktiv erfolgen.

Hierzu wählt man nach einem Klick mit der rechten Maustaste auf den Colorbar das Element Location.

- Die Farbanteile einer Colormap können auch grafisch dargestellt werden. Dazu ruft man

rgbplot(cm)

cm: Matrix der Colormap.

4.2.3 Einstellung der Colormap

Mit folgenden Funktionen kann eine Colormap eingestellt werden:

colormap(fm)

Mit fh=fm(m) wird dann: fmnew=colormap(fh) fmnew wird eingestellt.

fm ist eine n × 3 und fmnew ist eine m × 3 Matrix mit m < n set(gcf,’Colormap’,fh)

4.2.4 Verändern einer Colormap

Es existiert eine Vielzahl von Möglichkeiten zur Veränderung einer bestehenden Colormap.

4.2.4.1 Verändern der Helligkeit

- Man kann die einzelnen Farben in einer Colormap und natürlich auch Einzel- farben durch Helligkeitssteuerung verändern und auf diese Weise neue Farben erzeugen.

- Dazu führt man den Helligkeitsfaktor b, im Englischen brighten genannt, ein. Es gilt gilt [Abbildung in dieser Leseprobe nicht enthalten].

- Aus diesem Faktor b wird gebildet:

Abbildung in dieser Leseprobe nicht enthalten

- Der neue Farbvektor fn entsteht dann aus dem alten Farbvektor fa durch Potenzieren mit g:

Abbildung in dieser Leseprobe nicht enthalten

Dies erreicht man mit der Funktion: fn=brighten(f,b)

4.2.4.2 Dynamische Veränderung der Colormap

- Durch dynamische Veränderung der Colormap mit der Funktion spinmap(t,inc)

Die Farbrotation dauert 10*t Sekunden.

inc ist die Schrittweite der Rotation der Colormap. inc kann positiv und negativ sein.

spinmat(’inf ’)

Beliebig langes Rotieren. Abbruch mit CTRL+C. kann man interessante Farbeffekte erzielen.

- Man kann diesen Vorgang auch von Hand bewirken. Hierzu wählt man nach einem Klick mit der rechten Maustaste auf dem Colorbar Interaktiv Colormap Shift und verschiebt dann den Cursor auf dem Colorbar.

4.2.4.3 Colormap-Editor

- Eine Einstellung von Colormaps kann man auch durch Aufruf eines interakti- ven Programms

colormapeditor erreichen.

- Dieses Programm kann auch durch Betätigung der rechten Maustaste über dem Colorbar und Auswahl von Launch Colormapeditor aufgerufen werden.

- In einem neuen Figure erscheint die Colormap. Diese ist mit Markierungen (Nodes) versehen, die unterschiedliche Funktionen haben:

Abbildung in dieser Leseprobe nicht enthalten

- Durch Einfügen und Verschieben der einzelnen Nodes kann man die Colormap umgestalten.

- Dies ist auch durch Einfügen neuer Farben mit der Operation Nr. 5 möglich.

4.3 Spezielle Grau-Colormap

- Eine spezielle Grau-Colormap erhält man mit der Funktion graymap=contrast(B {,m })

B: Martrix eines IND-Bildes, siehe Image-Objekte. Bi,k ist der Index in eine Colormap.

Es entsteht eine neue Colormap der Größe m × 3.

Fehlt m, dann wird die Länge gleich der aktuellen Colormap.

- Es gilt für alle k: graymap (k, 1) = graymap (k, 2) = graymap (k, 3). - Diese Colormap hat gute Kontraste.

4.4 Fixed Colormap

- Alle Einzelfarben, die vom Figure-Objekt und seinen Children verwendet wer- den, sammelt MATLAB in der RGB-Matrix F ixed Colormap.

- Diese erhält man über die Property:

Propname: FixedColors, Propvalue: RGB − M atrix (readonly) - Über den Speicherplatz siehe MATLAB-Help.

4.5 Weitere Farbcodierungen

Neben der Codierung von Farben nach dem RGB-Schema existieren weitere Codie- rungen.

4.5.1 HSV-Darstellung

Diese Codierungsart benötigt ebenfalls drei Zahlenwerte zur Festlegung der Farbe. Diese Zahlenwerte bezeichnet man mit:

Abbildung in dieser Leseprobe nicht enthalten

4.5.2 NTSC-Darstellung

- NTSC ist die Abkürzung von National Television Systems Comitee. Dieses Format wird in den USA für das Fernsehen genutzt.

- Bei dieser Darstellungsform sind ebenfalls drei Zahlenwerte erforderlich.

Abbildung in dieser Leseprobe nicht enthalten

- Bei dieser Darstellungsart ist die Grauskala alleine in der Helligkeitsinforma- tion (Y) enthalten, während die beiden anderen Komponenten den Farbwert (I,Q) beinhalten.

- Die Umrechnungsvorschriften lauten:

Abbildung in dieser Leseprobe nicht enthalten

4.5.3 CMYK-Darstellung

- Für Tintenstrahldrucker werden die Farben aus den Basisfarben Gelb(y), Magen- ta(m), Cyan(c) und Key(k) durch subtraktive Mischung erzeugt.

- Mit key-plate wird im englischen Sprachgebrauch die schwarzdruckende Schlüssel- platte im Offsetdruck bezeichnet.

4.5.4 Umrechnungsprogramme

- Mit dem Demonstrationsprogramm DemoFarbeUmr.m kann man sowohl für verschiedene Colormaps die drei Darstellungsarten vergleichen und für einzelne Farben die Darstellungsarten ineinander umrechnen.

- Für diese Umrechnung der Darstellungsarten stehen folgende Funktionen zur Verfügung:

Abbildung in dieser Leseprobe nicht enthalten

5 Root-Objekt

Dieses Objekt beschreibt den Bildschirm des Rechners, Teile des Matlab-Command- Windows (MCW) und übergreifende Einstellungen.

5.1 Allgemeines

- Es wird automatisch erzeugt.
- Ein Root-Objekt hat keinen Vorfahr.
- Seine Kinder sind die Figure-Objekte.
- Dieses Objekt wird durch die Root -Properties beschrieben.

5.2 Root-Properties

- Man erhält den Handle des aktuellen Fensters über:

Propname: CurrentFigure, Propvalue: F igureHandle

Falls kein Figure vorhanden ist enthält die Property die leere Matrix. - Mit der Property

Propname: FixedWidthFontName, Propvalue: F ontN ame

kann man festlegen welcher Font mit dem Namen F ontN ame benutzt werden soll wenn man den Namen F ixedW idth als Fontnamen benutzt.

- Für die Angabe von Größen- und Ortsangaben benutzt man:

Propname: Units, Propvalue: pixels|normalized|inches|centimeter |points|characters

Die Defaulteinstellung ist P ixels.

- Für die Bildschirmbeschreibung existieren die Properties: Propname: ScreenSize, Propvalue: Read only

Man erhält einen Vektor der Form [ lef t, bottom, width, height ] Für alle Einheiten ist lef t = bottom = 0 mit Ausnahme von pixels. Dann ist lef t = bottom = 1.

Die Auflösung des Displays zeigt:

Propname: ScreenPixelsPerInch, Propvalue: Read only

Die Farbtiefe des Bildschirms wird mit

Propname: ScreenDepth, Propvalue: n

festgelegt. Die maximale Zahl der darstellbaren Farben ist 2 n. Zur Erklärung der Property

Propname: MonitorPosition, Propvalue: [ x, y, w, h; x, y, w, h ] wird auf MATLAB -Help verwiesen.

- Die MCW-Größe in Zeilen und Spalten kann man lesen:

Propname: CommandWindowSize, Propvalue: Readonly

- Zur Bestimmung der Lage des Pointers (Cursors) existieren zwei Properties. Propname: PointerWindow, Propvalue: Read only F igure − Handle Der Handle gilt für das Figure über dem der Pointer steht. Die Property

Propname: PointerLocation, Propvalue: [ x, y ]

gibt die Pointer-Position in Units an. Gemessen wird von der linken unteren Ecke des Bildschirms.

Mit dieser Property kann man den Pointer auch setzen.

- Einstellungen im MCW:

Propname: Format, Propvalue: short|shortE|shortG|long|longE|longG| bank|hex| + |rat

Propname: FormatSpacing, Propvalue: compact|loose

- Die Anzahl der verschachtelten Funktionsaufrufe stellt man ein: Propname: RecursionLimit, Propvalue: integer

- Die letzte Fehlermeldung erhält man mit:

Propname: ErrorMessage, Propvalue: Read only

- Liste alle Handles, die als hidden markiert sind:

Propname: ShowHiddenHandles, Propvalue: on|of f 26

5.3 Echofunktion

- Mit der Property

Propname: Echo, Propvalue: of f |on

kann man steuern ab die Zeilen eines Scripts bei der Ausführung angezeigt werden oder nicht.

- Wesentlich mächtiger ist die entsprechende Funktion.

- Für Script-Files gilt:

echo on Anschalten

echo off Ausschalten

echo Toggeln

– Für m-Files gilt:

echo name on Anschalten des m-Files name.m

echo name off echo name

echo on all echo off all

5.4 DiaryFunktion

- Mit der Property

Ausschalten des m-Files name.m Toggeln des m-Files name.m

Alle m-Files anschalten Alle m-Files ausschalten

Propname: DiaryFile, Propvalue: F ilename

wird ein File vereinbart. Geschieht dies nicht, so wird das Defaultfile diary angenommen.

Mit der Property

Propname: Diary, Propvalue: on|of f

kann die Protokollfunktion an- oder abgeschaltet werden.

Es werden alle Keyboard-Eingänge und die meisten Ausgaben registriert. - Es existiert auch eine entsprechende Funktion:

diary { (’Filename’) }

Fehlt der Name so wird diary angenommen.

Abbildung in dieser Leseprobe nicht enthalten

6 Figure-Objekt

6.1 Einführung

- Das Figure ist die Darstellungsfläche für alle Objekte. - Alle Figures sind Kinder des Root-Objekts. - Ein Figure beinhaltet im allgemeinen folgende Elemente:

- Die eigentliche Darstellungsfläche.
- Eine Titelzeile bestehend aus dem Numbertitle und dem Namen.
- Einen Menubar.
- Einen Toolbar.
- Einen Pointer (Cursor).
- Eine Colormap. Siehe das Kapitel F arbe in MATLAB.

6.2 Funktionen

- Ein Figure kann man erzeugen und öffnen: F=figure { (Propertylist) }

Erzeugen und Öffnen eines Fensters. figure(F)

Öffnen eines Fensters mit Handle F. figcl(F)

Öffnen und Löschen eines Fensters mit Handle F. - Den Inhalt eines Figures kann man löschen:

Abbildung in dieser Leseprobe nicht enthalten

Die Position-Property ist ausgenommen. - Zum Schließen eines Figures dient: close { (F) }

delete { (F) }

Fehlt F dann F=gcf.

- Den Handle des aktuellen Fensters erhält man mit: F=get(0,’CurrentFigure’)

F=gcf

Falls kein Figure vorhanden, wird eines erzeugt.

6.3 Properties

Die wesentlichsten Properties sind: - Sichtbarkeit:

Propname: Visible, Propvalue: on|of f

- Verändern der Grösse eines erzeugten Figures: Propname: Resize, Propvalue: on|of f

- Für die Einheiten im Figure gilt:

Propname: Units, Propvalue: pixels (D) |normalized|inches|centimeters|... points|characters

- Position des Figures auf dem Bildschirm:

Propname: Position, Propvalue: [ lef t botton width height ] - Hintergrundfarbe:

Propname: Color, Propvalue: k|y|m|c|r|g|b|w| [ RGB ] Die Defaultfarbe ist [ RGB ] = [0 . 8554 0 . 8554 0 . 8554].

- Wahl der Figure-Beschreibung

Propname: MenuBar, Propvalue: none|f igure

Propname: Toolbar, Propvalue: auto|f igure|none Propname: Numbertitle, Propvalue: on|of f Propname: Name, Propvalue: ′N ame′ Es gibt auch die Funktionen:

plotedit({ F, } ’showtoolsmenu’) Anschalten

plotedit({ F, } ’hidetoolsmenu’) Abschalten

Fehlt der Handle F, so ist F=gcf.

- Die Property

Propname: WindowStyle, Propvalue: normal|modal|docked hat im Prinzip zwei Funktionen:

- Wird die Property auf docked gesetzt, so wird das Fenster an das Com- mand Window gedockt. Es kann dann nur mit dem Pushbotton undock Command Window wieder verselbständigt werden.

- Bei Einstellung der Property auf normal liegt Normalbetrieb vor. Man kann insbesondere ein anderes Fenster aktivieren.

- Hat ein Fenster die Property modal und wird es aktiviert, so kann es nicht mehr verlassen werden. Nur ein Schliessen des Fensters über den entsprechenden Figure-Menu-Button ist möglich.

[...]

Ende der Leseprobe aus 169 Seiten

Details

Titel
Grafik in MATLAB
Untertitel
Ein Kompendium
Hochschule
Hochschule für angewandte Wissenschaften Würzburg-Schweinfurt  (Elektrotechnik)
Autor
Jahr
2011
Seiten
169
Katalognummer
V183357
ISBN (eBook)
9783656079927
ISBN (Buch)
9783656079781
Dateigröße
906 KB
Sprache
Deutsch
Anmerkungen
Professor Dipl.Ing. Helmut Roderer, geboren 1936 in Würzburg, studierte Regelungstechnik und technische Elektronik an der Technischen Universität Darmstadt. Ab 1964 arbeitete er in der Industrie, hauptsächlich bei der Dornier AG. Seit 1973 lehrt er an der Hochschule für angewandte Wissenschaften Würzburg-Schweinfurt das Fach Prozessdatenverarbeitung im Studiengang Informationstechnik.
Schlagworte
grafik, informatik, ingenieurwissenschaften
Arbeit zitieren
Helmut Roderer (Autor:in), 2011, Grafik in MATLAB, München, GRIN Verlag, https://www.grin.com/document/183357

Kommentare

  • Noch keine Kommentare.
Blick ins Buch
Titel: Grafik in MATLAB



Ihre Arbeit hochladen

Ihre Hausarbeit / Abschlussarbeit:

- Publikation als eBook und Buch
- Hohes Honorar auf die Verkäufe
- Für Sie komplett kostenlos – mit ISBN
- Es dauert nur 5 Minuten
- Jede Arbeit findet Leser

Kostenlos Autor werden