MATLAB - Funktionen
Eine Funktion ist eine Gruppe von Anweisungen, die zusammen eine Aufgabe ausführen. In MATLAB werden Funktionen in separaten Dateien definiert. Der Name der Datei und der Funktion sollte gleich sein.
Funktionen arbeiten mit Variablen innerhalb ihres eigenen Arbeitsbereichs, der auch als lokaler Arbeitsbereich bezeichnet wird , getrennt von dem Arbeitsbereich, auf den Sie an der MATLAB-Eingabeaufforderung zugreifen, der als Basisarbeitsbereich bezeichnet wird .
Funktionen können mehr als ein Eingabeargument akzeptieren und mehr als ein Ausgabeargument zurückgeben.
Die Syntax einer Funktionsanweisung ist −
function [out1,out2, ..., outN] = myfun(in1,in2,in3, ..., inN)
Beispiel
Die folgende Funktion mit dem Namen mymax sollte in eine Datei namens mymax.m geschrieben werden . Es nimmt fünf Zahlen als Argument und gibt das Maximum der Zahlen zurück.
Erstellen Sie eine Funktionsdatei namens mymax.m und geben Sie den folgenden Code ein −
function max = mymax(n1, n2, n3, n4, n5) %This function calculates the maximum of the % five numbers given as input max = n1; if(n2 > max) max = n2; end if(n3 > max) max = n3; end if(n4 > max) max = n4; end if(n5 > max) max = n5; end
Die erste Zeile einer Funktion beginnt mit dem Schlüsselwort function . Es gibt den Namen der Funktion und die Reihenfolge der Argumente an. In unserem Beispiel die mymax Die Funktion hat fünf Eingabeargumente und ein Ausgabeargument.
Die Kommentarzeilen direkt nach der Funktionsanweisung liefern den Hilfetext. Diese Zeilen werden ausgegeben, wenn Sie −
eingebenhelp mymax
MATLAB führt die obige Anweisung aus und gibt das folgende Ergebnis zurück −
This function calculates the maximum of the five numbers given as input
Sie können die Funktion als −
aufrufenmymax(34, 78, 89, 23, 11)
MATLAB führt die obige Anweisung aus und gibt das folgende Ergebnis zurück −
ans = 89
Anonyme Funktionen
Eine anonyme Funktion ist wie eine Inline-Funktion in herkömmlichen Programmiersprachen, die in einer einzigen MATLAB-Anweisung definiert ist. Es besteht aus einem einzigen MATLAB-Ausdruck und einer beliebigen Anzahl von Eingabe- und Ausgabeargumenten.
Sie können eine anonyme Funktion direkt in der MATLAB-Befehlszeile oder innerhalb einer Funktion oder eines Skripts definieren.
Auf diese Weise können Sie einfache Funktionen erstellen, ohne dafür eine Datei erstellen zu müssen.
Die Syntax zum Erstellen einer anonymen Funktion aus einem Ausdruck lautet
f = @(arglist)expression
Beispiel
In diesem Beispiel schreiben wir eine anonyme Funktion namens power, die zwei Zahlen als Eingabe nimmt und die erste Zahl potenziert mit der zweiten Zahl zurückgibt.
Erstellen Sie eine Skriptdatei und geben Sie den folgenden Code ein −
Live-Demopower = @(x, n) x.^n; result1 = power(7, 3) result2 = power(49, 0.5) result3 = power(10, -10) result4 = power (4.5, 1.5)
Wenn Sie die Datei ausführen, wird −
angezeigtresult1 = 343 result2 = 7 result3 = 1.0000e-10 result4 = 9.5459
Primäre und Unterfunktionen
Jede andere Funktion als eine anonyme Funktion muss in einer Datei definiert werden. Jede Funktionsdatei enthält eine erforderliche primäre Funktion, die zuerst erscheint, und eine beliebige Anzahl optionaler Unterfunktionen, die nach der primären Funktion kommen und von ihr verwendet werden.
Primärfunktionen können von außerhalb der Datei, die sie definiert, aufgerufen werden, entweder von der Befehlszeile oder von anderen Funktionen, aber Unterfunktionen können nicht von der Befehlszeile oder anderen Funktionen außerhalb der Funktionsdatei aufgerufen werden.
Unterfunktionen sind nur für die primäre Funktion und andere Unterfunktionen innerhalb der Funktionsdatei sichtbar, die sie definiert.
Beispiel
Lassen Sie uns eine Funktion namens quadratisch schreiben, die die Wurzeln einer quadratischen Gleichung berechnen würde. Die Funktion würde drei Eingaben annehmen, den quadratischen Koeffizienten, den linearen Koeffizienten und den konstanten Term. Es würde die Wurzeln zurückgeben.
Die Funktionsdatei quadratic.m enthält die primäre Funktion quadratisch und die Unterfunktion disk , die die Diskriminante berechnet.
Erstellen Sie eine Funktionsdatei quadratic.m und geben Sie den folgenden Code ein −
function [x1,x2] = quadratic(a,b,c) %this function returns the roots of % a quadratic equation. % It takes 3 input arguments % which are the co-efficients of x2, x and the %constant term % It returns the roots d = disc(a,b,c); x1 = (-b + d) / (2*a); x2 = (-b - d) / (2*a); end % end of quadratic function dis = disc(a,b,c) %function calculates the discriminant dis = sqrt(b^2 - 4*a*c); end % end of sub-function
Sie können die obige Funktion von der Eingabeaufforderung als −
aufrufenquadratic(2,4,-4)
MATLAB führt die obige Anweisung aus und gibt das folgende Ergebnis zurück −
ans = 0.7321
Verschachtelte Funktionen
Sie können Funktionen im Körper einer anderen Funktion definieren. Diese werden als verschachtelte Funktionen bezeichnet. Eine verschachtelte Funktion enthält einige oder alle Komponenten einer anderen Funktion.
Verschachtelte Funktionen werden im Bereich einer anderen Funktion definiert und teilen sich den Zugriff auf den Arbeitsbereich der enthaltenden Funktion.
Eine verschachtelte Funktion folgt der folgenden Syntax −
function x = A(p1, p2) ... B(p2) function y = B(p3) ... end ... end
Beispiel
Lassen Sie uns die Funktion quadratisch umschreiben , aus dem vorherigen Beispiel, aber diesmal ist die Disc-Funktion eine verschachtelte Funktion.
Erstellen Sie eine Funktionsdatei quadratic2.m und geben Sie den folgenden Code ein −
function [x1,x2] = quadratic2(a,b,c) function disc % nested function d = sqrt(b^2 - 4*a*c); end % end of function disc disc; x1 = (-b + d) / (2*a); x2 = (-b - d) / (2*a); end % end of function quadratic2
Sie können die obige Funktion von der Eingabeaufforderung als −
aufrufenquadratic2(2,4,-4)
MATLAB führt die obige Anweisung aus und gibt das folgende Ergebnis zurück −
ans = 0.73205
Private Funktionen
Eine private Funktion ist eine primäre Funktion, die nur für eine begrenzte Gruppe anderer Funktionen sichtbar ist. Wenn Sie die Implementierung einer oder mehrerer Funktionen nicht offenlegen möchten, können Sie sie als private Funktionen erstellen.
Private Funktionen befinden sich in Unterordnern mit dem speziellen Namen privat .
Sie sind nur für Funktionen im übergeordneten Ordner sichtbar.
Beispiel
Lassen Sie uns die quadratische umschreiben Funktion. Diesmal jedoch die Scheibe Funktion, die die Diskriminante berechnet, wird eine private Funktion sein.
Erstellen Sie im Arbeitsverzeichnis einen Unterordner namens private. Speichern Sie die folgende Funktionsdatei disc.m darin −
function dis = disc(a,b,c) %function calculates the discriminant dis = sqrt(b^2 - 4*a*c); end % end of sub-function
Erstellen Sie eine Funktion quadratic3.m in Ihrem Arbeitsverzeichnis und geben Sie den folgenden Code darin ein −
function [x1,x2] = quadratic3(a,b,c) %this function returns the roots of % a quadratic equation. % It takes 3 input arguments % which are the co-efficient of x2, x and the %constant term % It returns the roots d = disc(a,b,c); x1 = (-b + d) / (2*a); x2 = (-b - d) / (2*a); end % end of quadratic3
Sie können die obige Funktion von der Eingabeaufforderung als −
aufrufenquadratic3(2,4,-4)
MATLAB führt die obige Anweisung aus und gibt das folgende Ergebnis zurück −
ans = 0.73205
Globale Variablen
Globale Variablen können von mehr als einer Funktion gemeinsam genutzt werden. Dazu müssen Sie die Variable in allen Funktionen als global deklarieren.
Wenn Sie vom Basisarbeitsbereich aus auf diese Variable zugreifen möchten, deklarieren Sie die Variable in der Befehlszeile.
Die globale Deklaration muss erfolgen, bevor die Variable tatsächlich in einer Funktion verwendet wird. Es empfiehlt sich, für die Namen globaler Variablen Großbuchstaben zu verwenden, um sie von anderen Variablen zu unterscheiden.
Beispiel
Lassen Sie uns eine Funktionsdatei namens average.m erstellen und den folgenden Code darin eingeben −
function avg = average(nums) global TOTAL avg = sum(nums)/TOTAL; end
Erstellen Sie eine Skriptdatei und geben Sie den folgenden Code ein −
global TOTAL; TOTAL = 10; n = [34, 45, 25, 45, 33, 19, 40, 34, 38, 42]; av = average(n)
Wenn Sie die Datei ausführen, wird das folgende Ergebnis angezeigt −
av = 35.500
MATLAB