Octave-Tutorial/Funktionsdefinition

Aus Wikiversity
Zur Navigation springen Zur Suche springen

Syntax[Bearbeiten]

In Octave werden Funktionen mit der folgenden Syntax definiert:

function [ret1, ret2, ... ] = myfunctionname( arg1, arg2, ... )
    ## Beschreibung was die Funktion macht mit Kommentarzeichen "##"
    Definition
endfunction

Beispiel[Bearbeiten]

Verwenden Sie für Funktionsnamen keine Umlaute, sondern lediglich Buchstaben A-Z,a-z und Zahlen 0-9.

Fakultät[Bearbeiten]

Die Fakultät-Funktion, die zu einer natürlichen Zahl die Fakultät ausrechnet.

function result = fakultaet( n )
    if( n == 0 )
        result = 1;
        ## Nun Funktion beenden und das Resultat "result" als Rueckgabewert ausgeben
        return;
    else
        ## Ein Vektor der Form [1,2,3,...,n] erzeugen und 
        ## das komponentenweise Produkt berechnen.
        result = prod( 1:n );
    endif
endfunction

Speichern der Funktion als m-File[Bearbeiten]

Speichern Sie die Funktionen als m-File in dem Verzeichnis, in dem Sie die Funktion verwenden wollen. Nutzen Sie für den Namen den Funktionsnamen der Datei, also fakultaet.m für die Funktion fakultaet(n).

Maximum/Minimum von zwei Zahlen[Bearbeiten]

Die folgende Funktion, maxmin, gibt den maximalen und minimalen Wert von zwei ganzen Zahlen zurück:

function [maxi,mini] = maxmin( a, b )
   if(a >= b )
        maxi = a;
        mini = b;
        return;
   else
        maxi = b;
        mini = a;
        return;
   endif
endfunction

Speichern der Funktion als m-File[Bearbeiten]

Speichern Sie die Funktionen als m-File in dem Verzeichnis, in dem Sie die Funktion verwenden wollen. Nutzen Sie für den Namen den Funktionsnamen der Datei, also maxmin.m für die Funktion maxmin(a,b).


Aufruf der Funktion[Bearbeiten]

Um eine Funktion mit mehreren Argumenten aufzurufen, geben Sie mehrere Variablen zur Übergabe an die Funktion an. Besteht das Ergebnis aus mehreren Komponenten dann definieren Sie den Array mit der entsprechenden Anzahl an Komponenten. Zum Beispiel könnte man schreiben:

[big,small] = maxmin(17,101);

Nach der Ausführung von maxmin(17,101) würde die Variable "big" den Wert "101" und die Variable "small" den Wert "17" belegt. Wenn weniger trotz zweidimensionalem Rückgabevektor mit zwei Variablen weniger Variablen für die Speicherung des Rückgabewertes verwendet, werden die Ergebnis der Reihenfolge nach gespeichert und die fehlenden Variablen zur Speicherung des Rückgabewerters werden einfach ohne Fehlermeldung ignoriert. Für den Aufruf von

a = maxmin(13,5)

würde 13 als Maximum bei beiden Zahlen in der Variablen a gespeichert und das Minimum als zweiter Rückgabewert einfach ignoriert.

Empfehlung: Geben Sie immer den gesamten Vektor als Rückgabewert an, damit konsistenten Aufrufe der Funktionen entstehen, die über die Dimension der Rückgabe der Funktion informieren.

Aufgabe[Bearbeiten]

  • Definieren Sie eine Funktion normvec(x), die für einen Vektor die Norm
berechnet.
Testen Sie dazu in Octave die folgenden Befehle und Funktionsaufrufe:
  • x = 1:10
  • x.^2
  • sum(x)
  • sqrt(25)
function laenge = normvec( x )
   ## Funktion berechnet die Laenge von ein Vektor aus dem IR^n
   ## z.B. mit x = [x1,x2,x3,x4] 
   
   laenge=....
endfunction
Speichern Sie dann die Funktionsdefinition in dem m-File normvec.m in Ihrem Arbeitsverzeichnis ab.

Siehe auch[Bearbeiten]