EinführunginMATLAB...

download EinführunginMATLAB BlockkursDLR:19.4-22.4num.math.uni-goettingen.de/grapin/teaching/Vorlesung_MATLAB_22_0… · Gerd Rapin Einfuhrung¨ in MATLAB – p.11/29. Function-Handles Ein

If you can't read please download the document

Transcript of EinführunginMATLAB...

  • 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