English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Eine Funktion ist eine Gruppe von Anweisungen, die gemeinsam Aufgaben erledigen. In MATLAB werden Funktionen in separaten Dateien definiert. Der Dateiname und der Funktionsname sollten identisch sein.
Funktionen führen Operationen an Variablen in ihrem eigenen Arbeitsbereich (auch als lokaler Arbeitsbereich bezeichnet) durch, der sich von dem Arbeitsbereich unterscheidet, auf den über den MATLAB-Befehlszeilenbefehl zugegriffen wird (der als Basisarbeitsbereich bezeichnet wird).
Funktionen können mehrere Eingabeparameter akzeptieren und mehrere Ausgabeparameter zurückgeben.
Die Syntax der Funktionsanweisung ist-
function [out1,out2, ..., outN] = myfun(in1,in2,in3, ..., inN)
mit dem NamenmymaxDie Funktion sollte in eine Datei mit dem Namenmymax.min der Datei. Es nimmt fünf Zahlen als Parameter und gibt die größte Zahl zurück.
Erstellen Sie eine Funktionsdatei mit dem Namen mymax.m und geben Sie den folgenden Code ein-
function max = mymax(n1, n2, n3, n4, n5) %Diese Funktion berechnet %Fünf Zahlen als Eingabe 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 der Funktion beginnt mit dem Schlüsselwort function am Anfang . Es gibt den Namen der Funktion und die Reihenfolge der Parameter. In unserem Beispiel:mymaxDie Funktion hat fünf Eingabeparameter und ein Ausgabeparameter.
Kommentarezeilen nach der Funktionsanweisung bieten Hilfstext. Wenn Sie das Folgende eingeben, werden diese Zeilen gedruckt:
help mymax
MATLABführtdenobigenBefehlausundgibtfolgendesErgebniszurück-
Diese Funktion berechnet das Maximum der five numbers given as input
Sie können die Funktion aufrufen-
mymax(34, 78, 89, 23, 11)
MATLABführtdenobigenBefehlausundgibtfolgendesErgebniszurück-
ans = 89
Anonyme Funktionen sind wie Inline-Funktionen in traditionellen Programmiersprachen, die in einer einzigen MATLAB-Anweisung definiert werden. Sie bestehen aus einem MATLAB-Ausdruck und einer beliebigen Anzahl von Eingabe- und Ausgabeparametern.
Sie können anonyme Funktionen direkt in der MATLAB-Kommandozeile oder in Funktionen oder Skripten definieren.
So können Sie einfache Funktionen erstellen, ohne eine Datei für diese erstellen zu müssen.
Die Syntax zum Erstellen von anonymen Funktionen aus Ausdrücken ist
f = @(arglist)expression
In diesem Beispiel werden wir eine anonyme Funktion namens power schreiben, die zwei Zahlen als Eingabe annimmt und die erste Zahl in die Potenz der zweiten Zahl hebt.
Erstellen Sie eine Skriptdatei und geben Sie den folgenden Code ein-
power = @(x, n) x.^n; result1 = power(7, 3) result2 = power(49, 0.5) result3 = power(10, -10) result4 = power (4.5, 1.5)
Wenn das Datei ausführt, zeigt es-
result1 = 343 result2 = 7 result3 = 1.0000e-10 result4 = 9.5459
Jegliche Funktion, mit Ausnahme der anonymen Funktion, muss in der Datei definiert werden. Jede Funktionsdatei enthält eine erforderliche Hauptfunktion, die zuerst vorkommt, sowie eine beliebige Anzahl von optionalen Untefunktionen, die nach der Hauptfunktion vorkommen und von ihr verwendet werden.
Die Hauptfunktion kann von außen des Datei-Definitionsdokuments (von der Kommandozeile oder anderen Funktionen) aufgerufen werden, aber die Untefunktion kann nicht von außerhalb der Funktionsdatei aus von der Kommandozeile oder anderen Funktionen aufgerufen werden.
子函数仅对主函数和定义它们的函数文件中的其他子函数可见。
Die Unteraufgaben sind nur für die Hauptfunktion und die anderen Unteraufgaben in der definierten Funktionsdatei sichtbar.
Lassen Sie uns eine Funktion namens quadratic schreiben, um die Wurzeln einer quadratischen Gleichung zu berechnen. Diese Funktion enthält drei Eingaben: die quadratische, die lineare und die Konstanten.
Die Funktionsdatei quadratic.m enthält die Hauptfunktion quadratic und die Unteraufgabe disc, die den Diskriminanten berechnet.
function [x1,x2Erstellen Sie eine Funktionsdatei quadratic.m und geben Sie den folgenden Code ein ] = quadratic(a,b,c) % Diese Funktion gibt zurück % eine quadratische Gleichung.3Eingabeparameter % Es benötigt2%x ,x und % Konstanten d = disc(a,b,c); x1 = (-b + d) / (2*a); x2 = (-b - d) / (2*a); % Es gibt zurück function dis = disc(a,b,c) % Berechnung des Diskriminanten der Funktion dis = sqrt(b^2 - 4*a*c); end % Ende der Funktion quadratic-end % Ende der Unteraufgabe
function
Sie können diese Funktion wie folgt von der Kommandozeile aus aufrufen:2,4,-4)
MATLABführtdenobigenBefehlausundgibtfolgendesErgebniszurück-
quadratic(7321
Eingebettete Funktionen
Eingebettete Funktionen werden im Bereich einer anderen Funktion definiert und haben Zugriff auf den Arbeitsbereich der umschließenden Funktion. Sie können eine Funktion im Hauptteil einer anderen Funktion definieren. Diese werden als eingebettete Funktionen bezeichnet. Eingebettete Funktionen enthalten alle oder einige Komponenten anderer Funktionen.
Eingebettete Funktionen folgen der folgenden Syntax-
function x = A(p1, p2) ... B(p2) function y = B(p3) ... end ... end
Lassen Sie uns den vorstehenden Beispielcode neu schreibenquadraticFunktion. Diesmal ist die Funktion disc eine eingebettete Funktion.
Erstellen Sie eine Funktionsdateiquadratic2.m,und geben Sie den folgenden Code ein-
function [x1,x2] = quadratic2(a,b,c) function disc % Einfügen einer Funktion d = sqrt(b^2 - 4*a*c); end % Ende der Funktion disc disc; x1 = (-b + d) / (2*a); x2 = (-b - d) / (2*a); end % Ende der Funktion quadratic2
SiekönnendenobigenFunktionvondemBefehlszeilenmodusausführen,wiefolgt:
quadratic2(2,4,-4)
MATLABführtdenobigenBefehlausundgibtfolgendesErgebniszurück-
ans = 0.73205
Private Funktionen sind Hauptfunktionen, die nur für eine begrenzte Anzahl anderer Funktionen sichtbar sind. Wenn Sie die Implementierung der Funktion function(s) nicht öffentlich machen möchten, können Sie sie als private Funktionen erstellen.
Private Funktionen befinden sich in einem Unterordner mit dem speziellen Namen Private.
Sie sind nur für Funktionen im Elternverzeichnis sichtbar.
Lassen Sie uns neu schreibenquadraticDie Funktion. Diesmal berechnet die Funktion disc den Diskriminanten und ist eine private Funktion.
Erstellen Sie einen Unterordner namens private im Arbeitsverzeichnisverzeichnis, in dem Sie die folgenden Funktionsdateien disc.m speichern
function dis = disc(a,b,c) % Berechnung des Diskriminanten der Funktion dis = sqrt(b^2 - 4*a*c); end % Ende der Unteraufgabe
Erstellen Sie eine Funktion namens quadratic in Ihrem Arbeitsverzeichnis3.m und geben Sie den folgenden Code ein-
function [x1,x2] = quadratic3(a,b,c) % DieseFunktiongibtzurück % einerlinearenDoppelseitigenGleichung. Esbedarf3Eingabeparameter % sind x2,x und % Konstanten % Es gibt die Wurzeln zurück d = disc(a,b,c); x1 = (-b + d) / (2*a); x2 = (-b - d) / (2*a); end %Ende quadratic3
SiekönnendenobigenFunktionvondemBefehlszeilenmodusausführen,wiefolgt:
quadratic3(2,4,-4)
MATLABführtdenobigenBefehlausundgibtfolgendesErgebniszurück-
ans = 0.73205
GlobaleVariablenkönnenvonmehererenFunktionengeteiltwerden.Dieserfalls müssendasVariableinallenFunktionenalsglobaleVariabledeklariertwerden.
Wenn Sie auf die Variable ausdemBasicArbeitsbereich zugreifenmöchten,müssen SiedieVariableimBefehlszeilenmodusdeklarieren.
GlobaleDeclarationsmüssenvor dem GebrauchderVariablenin derFunktionvorgenommenwerden.Besser GrossbuchstabenzuverwendendieGlobalenVariablenvonanderenVariablenzuunterscheiden.
Lassen Sie uns eine Funktiondatei mit dem Namen average.m erstellen und den folgenden Code 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 die folgende Ausgabe angezeigt-
av = 35.500