Octave-Tutorial/Funktionsdefinition
Syntax
BearbeitenIn Octave werden Funktionen mit der folgenden Syntax definiert:
function [ret1, ret2, ... ] = myfunctionname( arg1, arg2, ... ) ## Beschreibung was die Funktion macht mit Kommentarzeichen "##" Definition endfunction
Beispiel
BearbeitenVerwenden Sie für Funktionsnamen keine Umlaute, sondern lediglich Buchstaben A-Z,a-z und Zahlen 0-9.
Fakultät
BearbeitenDie 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
BearbeitenSpeichern 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
BearbeitenDie 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
BearbeitenSpeichern 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
BearbeitenUm 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.