-
Einfhrung in MATLABBlockkurs DLR: 19.4-22.4.2004
Tag 4, 1.TeilGrafikobjekteFunktionen21.4.2004
Dr. Gerd [email protected]
Gerd Rapin Einfuhrung in MATLAB p.1/29
http://www.num.math.uni-goettingen.de/grapin
-
Grafik-ObjekteJedes Grafik-Objekt ist eindeutig bestimmtdurch seine Eigenschaften (engl. properties).
Die Eigenschaften der Objekte sind insogenannten handles gespeichert. Sie liegendort als double (Gleitkommazahl) vor.
Mit Hilfe dieser Handle knnen dieEigenschaften existierender Grafik-Objektegendert werden.
Gerd Rapin Einfuhrung in MATLAB p.2/29
-
Hierachische Strukturvon Grafik-Objekten
Level 1 Root Das Wurzel-Objekt bezieht sich auf den Compu-terschirm. Es wird automatisch erzeugt und esgibt nur eins. Alle anderen Objekte stammen vondiesem ab.
Level 2 Figure Diese Objekte sind durch die einzelnen Grafik-Fenster gegeben. Alle Figuren sind Kinder vonRoot.
Level 3 Axes, Uicontrol, Uime-nu, Uicontextmenu
Die Objekte Ui... sind benutzerdefinierte Grafik-Interfaces (werden hier nicht betrachtet).Die Axes Objekte definieren eine Region imGrafikfenster und ordnen ihre Kinder in dieserRegion an.
Level 4 Image, Line, Text, Sur-face,...
Die Objekte bestimmen das Aussehen derGrafik-Fenster. Sie sind Kinder der Axes Objek-te.
Gerd Rapin Einfuhrung in MATLAB p.3/29
-
Umgang mit dem Grafik-HandleKonstruktion einer Grafik>> x=0:0.2:2*pi; plot(x,sin(x))
Abfragen und Bedeutung der Handles allerObjekte>> h=findobj
h =
0
1.0000
100.0015
3.0016
>> get(h,type)
ans =
root
figure
axes
line
Gerd Rapin Einfuhrung in MATLAB p.4/29
-
Umgang mit dem Grafik-HandleMomentane Einstellung des Axes-Objekts>> set(h(3))
ALim
ALimMode: [ auto | manual ]
AmbientLightColor
Box: [ on | off ]
Eigenschaften des Line-Objekts>> set(h(4))
Color
EraseMode: [ normal | background | xor | none ]
LineStyle: [ - | -- | : | -. | none ]
LineWidth
Gerd Rapin Einfuhrung in MATLAB p.5/29
-
Umgang mit dem Grafik-Handle
ndern des Markers:>> set(h(4),Marker,s,MarkerSize,4)
ndern der Einheiten auf der x-Achseset(h(3),XTick,[0 pi/2 pi 2*pi])
set(h(3),XtickLabel,0|pi/2|pi|2pi)
gca, gcf und gco sind die Handle fr dieaktuelle Axes, die aktuelle Figure und dasaktuelle Objekt des 4. Levels.>> set(gcf,Name,Tolle Abb.)
>> set(gca,Fontsize,15)
>> l=legend(sin(x));
>> set(l,FontSize,20);
Gerd Rapin Einfuhrung in MATLAB p.6/29
-
HierachieDie Grafikobjekte sind hierachisch angeordnet.Sie haben also Kinder und Eltern.
Informationen zu den zugeordneten Kindern
a=get(l,Children), get(a,type)
Information zu den Eltern
d=get(l,Parent), get(d,type)
ndern der Kindeigenschaften
set(a(3),Color,[1 0 0])
Gerd Rapin Einfuhrung in MATLAB p.7/29
-
DefaulteinstellungenAnsehen der Defaultwerte
get(gcf,default)
ndern der Defaultwerte
>> set(0,DefaultLineLineWidth,3)>> set(0,DefaultFigureColor,g)>> set(0,DefaultAxesFontSize,20)
Gerd Rapin Einfuhrung in MATLAB p.8/29
-
Defaulteinstellungen IILschen der Defaulteinstellung
set(0,DefaultFigureColor,remove)
Die Defaulteinstellungen knnen in der Dateistartup.m im Verzeichnis /matlab/(Linux/Unix) abgelegt werden. Sie werden sobeim Start von MATLAB automatischeingeladen.
Gerd Rapin Einfuhrung in MATLAB p.9/29
-
FunktionenFunction-Handles
Funktionen als Strings
Function-Files
Inline-Funktionen
Funktionen als Argumente
Gerd Rapin Einfuhrung in MATLAB p.10/29
-
FunktionenEine Funktion kann ein m.-File, eineInline-Funktion oder auch ein String sein.
Funktionen werden in einem eigenen Workspaceverwaltet.
Beim ersten Aufruf speichert MATLAB dieFunktion im Workspace bis MATLAB verlassenwird oder die Funktion fun mit clear fungelscht wird.
MATLAB nutzt zur Unterscheidung derFunktionen die ersten 31 Zeichen des Namens.Funktionen (und Variablen) mssen mit einemBuchstaben beginnen.
Gerd Rapin Einfuhrung in MATLAB p.11/29
-
Function-HandlesEin Function Handle ist ein MATLAB Datentyp, dasalle Informationen enthlt, die zur Auswertung einerFunktion ntig sind.
Neu, seit Version MATLAB 6.
Definition, z.B. Sinus=@sin.
Anwendung bei der bergabe von Funktionen:quad(Sinus,0,1)
Gerd Rapin Einfuhrung in MATLAB p.12/29
-
Funktionen als StringsEingabe als String: a=exp(z)-1+z
Plotten der zugehrigen Funktionezplot(a,[-1 1])
Konvertieren zwischen Strings und Funktionen:str2func, func2str
Bemerkung:
Funktionen gegeben als Strings sind im allgemeinen
zu vermeiden! Besser andere Konstrukte (wie Inline-
Funktionen) benutzen!
Gerd Rapin Einfuhrung in MATLAB p.13/29
-
Function-Files:Function-Files sind m-Files, die mit demStichwort function beginnen.
Steuerung der Ein- und Ausgabeparameter:
Innerhalb einer Funktion gibt der Befehl varargin die Eingabeparameterals Cell-Array zurck. Die Anzahl der Inputvariablen erhlt man durchnargin.
varargout ist ein Cell-Array, in die die Ausgabewerte geschriebenwerden. Die Anzahl der Ausgabevariablen erhlt man durch nargout.
Ist func_name.m ein Function-File, so ist derentsprechende Function-Handle @func_name.
Gerd Rapin Einfuhrung in MATLAB p.14/29
-
Beispiel: vararginfunction result=integral(varargin)
% integral.m
% berechnet approximativ ein Integral ueber (a,b)
% durch die Mittelpunktregel mit Hilfe von N Punkten
% Eingabe: 0 Parameter: (N=20, a=0, b=1)
% 1 Parameter: N (a=0,b=1)
% 3 Parameter: N,a,b
N=20; a=0; b=1; % Default-Einstellung
anzahl_parameter=nargin; % Anz. Input-argumente
if anzahl_parameter==1
N=varargin{1};
end;
if anzahl_parameter==3
N=varargin{1}; a=varargin{2}; b=varargin{3};
end;
if anzahl_parameter=[0 1 3]
error(Falsche Anzahl an Input-Argumenten);
end;
Gerd Rapin Einfuhrung in MATLAB p.15/29
-
Beispiel: vararginx=(a+(b-a)/(2*N)):(b-a)/N:(b-(b-a)/(2*N));
y=x.3;
% Berechnung des Integrals
result=(b-a)*sum(y)*(1/N);
close all; % Plot
x1=linspace(a,b,N+1);
for i=1:N
fill([x1(i) x1(i) x1(i+1) x1(i+1)], [0 y(i) y(i) 0], r);
hold on;
end;
plot(a:(b-a)/100:b,(a:(b-a)/100:b).3,LineWidth,3);
title(strcat(\int x3 = ,num2str(result), fuer N =, num2str(N)));
Gerd Rapin Einfuhrung in MATLAB p.16/29
-
Inline-FunktionenEine Inline Funktion ist im Wesentlichen eineeinzeilige Funktion. Sie wird definiert durch einenString.
Beispiele:>> a=exp( z)- 1+ z; f=inline(a)
f =
Inline function:
f(z) = exp(z)-1+z
>> g=inline(x+y2,x,y)
g =
Inline function:
g(x,y) = x+y2
>> f(1),g(1,2),a(2)
ans =
2.7183
ans =
5
ans =
x
Gerd Rapin Einfuhrung in MATLAB p.17/29
-
Befehle fr FunktionenDurch feval(fun,x1,...,xn) wird dieFunktion fun an der Stelle
ausgewertet. fun ist dabei entweder einFunktionsname oder ein Function-Handle.
Durch f=fcnchk(g) wird ein String in einInline-Funktion umgewandelt (vgl. inline). Ist ein Function-Handle oder eine Inline-Funktionso ist .Durch vectorize(f) wird die fr Stringsoder Inline-Funktionen vektorisiert, d.h. * wirddurch .* ersetzt, durch .,...
Gerd Rapin Einfuhrung in MATLAB p.18/29
-
Beispiel: integral2.m (Auszug)function result=integral2(varargin)
% integral2.m
% Eingabe: 1 Parameter: f (N=20, a=0, b=1)
% 2 Parameter: f,N (a=0,b=1)
% 4 Parameter: f,N,a,b
N=20; a=0; b=1; % Default-Einstellung
anzahl_parameter=nargin; % Anz. Input-argumente
if anzahl_parameter==2
N=varargin{2};
end;
if anzahl_parameter==4
N=varargin{2}; a=varargin{3}; b=varargin{4};
end;
if anzahl_parameter=[1 2 4]
error(Falsche Anzahl an Input-Argumenten);
end;
f=fcnchk(varargin{1},vectorized); % eventuelle Umwandlung von Strings
x=(a+(b-a)/(2*N)):(b-a)/N:(b-(b-a)/(2*N));
y=feval(f,x); Gerd Rapin Einfuhrung in MATLAB p.19/29
-
integral2(log(x.2),30,1,5)
1 1.5 2 2.5 3 3.5 4 4.5 50
0.5
1
1.5
2
2.5
3
3.5 f dx 8.0956 fuer N =30
Gerd Rapin Einfuhrung in MATLAB p.20/29
-
Beispielfunktion
mit
! , " #
.
2 Versionen:
eindimensionale Version
N-dimensionale Version
Gerd Rapin Einfuhrung in MATLAB p.21/29
-
Beispielfunktion - 1d-Fallfunction result=f_1d(x)
%--------------------------------------
% Sobolevsche Mittelungsfunktion (1d)
% f(x)=exp(-1/(1-|x|2)), |x|
-
Beispielfunktion - n-dim.-Fallfunction result=f(varargin)
% f.m Sobolevsche Mittelungsfunktion
% Eingabe: Matrizen x1,x2,x3,..
% Ausgabe: Matrix result=f(x1,x2,...)
betrag=varargin{1}.2;
for i=2:nargin
betrag=betrag+varargin{i}.2;
end
dimension=size(varargin{1});
result=zeros(dimension(1),dimension(2));
for j=1:dimension(1)
for k=1:dimension(2)
if betrag(j,k)
-
Programm zum Plotten% plot_f.m
% Eindimensionaler Plot
subplot(2,2,1),
ezplot(@f);
% Zweidimensionaler Plot
subplot(2,2,2),
ezmesh(@f);
% Zweidimensionaler Plot
subplot(2,2,3),
ezsurfc(@f);
% Zweidimensionaler Plot
subplot(2,2,4),
ezcontourf(@f);
Gerd Rapin Einfuhrung in MATLAB p.24/29
-
Plots der Funktion
1 0.5 0 0.5
0
0.2
0.4
x
f
0.50
0.5
1
0
10
0.2
0.4
x
f
y
0.50
0.5
1
0
10
0.2
0.4
x
f
y 0.5 0 0.51
0.5
0
0.5
1
x
y
f
Gerd Rapin Einfuhrung in MATLAB p.25/29
-
integral2(@f,50,-1.1,1.1)
1.5 1 0.5 0 0.5 1 1.50
0.1
0.2
0.3
0.4
f dx 0.44399 fuer N =50
Gerd Rapin Einfuhrung in MATLAB p.26/29
-
Aufgaben1. Kopieren Sie die Programme in ihr
Matlab-Verzeichnis.
2 Berechnen Sie mit Hilfe von integral2.mapproximativ
$ $
$&% '
)( *,+ - %
fr . .
Gerd Rapin Einfuhrung in MATLAB p.27/29
-
Aufgaben3 Erstellen Sie die Funktion
/ / / / / /
#
Plotten Sie mit dem Befehl ezplot.4 Plotten Sie auf dem Intervall
0 - 1- 2 dieFunktion
3 ( *+ 54 6( 1 . Unterteilen Siedie -Achse in - 7 1-Schritte, und beschriften Siediese. Fgen Sie eine Legende in Schriftgre1
hinzu. ndern Sie auch die Schriftgre derAchsenbeschriftung.
Gerd Rapin Einfuhrung in MATLAB p.28/29
-
Aufgabe 5Modifizieren Sie das Programminterpolation.m. Schreiben Sie eine Funktion,die eine als String gegebene Funktion anquidistanten Punkten in
0 2 interpoliert.Hinweis: Verwenden Sie den Befehl f=fcnchk(f)
fr den String .
Gerd Rapin Einfuhrung in MATLAB p.29/29
Grafik-ObjekteHierachische Struktur\ von Grafik-ObjektenUmgang mit dem Grafik-HandleUmgang mit dem Grafik-Handle Umgang mit dem Grafik-Handle HierachieDefaulteinstellungenDefaulteinstellungen IIFunktionenFunktionenFunction-HandlesFunktionen als StringsFunction-Files:Beispiel: vararginBeispiel: vararginInline-FunktionenBefehle fr FunktionenBeispiel: integral2.m (Auszug)BeispielfunktionBeispielfunktion - 1d-FallBeispielfunktion - n-dim.-FallProgramm zum PlottenPlots der Funktionintegral2(@f,50,-1.1,1.1)AufgabenAufgabenAufgabe 5