Ausdrücke
Variablen
Wie die meisten anderen Programmiersprachen bietet auch die MATLAB® Sprache mathematische Ausdrücke, doch im Gegensatz zu den meisten Programmiersprachen umfassen diese Ausdrücke ganze Matrizen.
MATLAB erfordert keinerlei Deklarationen oder Dimensionsanweisungen. Wenn MATLAB einen neuen Variablennamen erkennt, wird automatisch die Variable erstellt und die richtige Speichermenge zugeordnet. Wenn die Variable bereits vorhanden ist, ändert MATLAB ihre Inhalte und weist gegebenenfalls neuen Speicher zu. Beispielsweise erstellt
num_students = 25
eine 1-mal-1-Matrix mit dem Namen num_students
und speichert den Wert 25 in ihrem Einzelelement. Zum Anzeigen der Matrix, die einer beliebigen Variablen zugeordnet ist, geben Sie einfach den Variablennamen ein.
Variablennamen bestehen aus einem Buchstaben, gefolgt von einer beliebigen Folge aus Buchstaben, Ziffern oder Unterstrichen. In MATLAB wird die Groß-/Kleinschreibung beachtet, das heißt, es wird zwischen Groß- und Kleinbuchstaben unterschieden. A
und a
sind nicht dieselbe Variable.
Zwar können Variablennamen eine beliebige Länge haben, doch MATLAB verwendet nur die ersten N
Zeichen des Namens (N
steht dabei für die von der Funktion namelengthmax
zurückgegebene Zahl) und ignoriert den Rest. Daher müssen Variablennamen in den ersten N
Zeichen eindeutig sein, damit MATLAB die Variablen unterscheiden kann.
N = namelengthmax N = 63
Zahlen
MATLAB verwendet für Zahlen die konventionelle Dezimalschreibweise mit einem optionalen Dezimalpunkt und einem vorangestellten Plus- oder Minuszeichen. Bei der wissenschaftlichen Schreibweise wird mit dem Buchstaben e
eine Zehnerpotenz als Skalierungsfaktor angegeben. Imaginäre Zahlen verwenden entweder i
oder j
als Suffix. Beispiele für zulässige Zahlen:
3 -99 0.0001 9.6397238 1.60210e-20 6.02252e23 1i -3.14159j 3e5i
MATLAB speichert alle Zahlen intern im langen Format, das durch den Gleitkommastandard IEEE® angegeben wird. Gleitkommazahlen haben eine endliche Genauigkeit von etwa 16 signifikanten Dezimalstellen und einen endlichen Bereich von etwa 10-308 bis 10+308.
Zahlen, die im Doppelformat dargestellt werden, haben eine maximale Genauigkeit von 52 Bits. Alle Zahlen im Doppelformat, die mehr als 52 Bits erfordern, verlieren an Genauigkeit. Der folgende Code zeigt beispielsweise zwei ungleiche Werte als gleich an, weil sie beide abgeschnitten werden:
x = 36028797018963968; y = 36028797018963972; x == y ans = 1
x = uint64(36028797018963968); y = uint64(36028797018963972); x == y ans = 0
Die MATLAB Software speichert die Real- und Imaginärteile einer komplexen Zahl. Sie verarbeitet den Betrag der Teile je nach Kontext auf unterschiedliche Weise. Beispielsweise sortiert die Funktion sort
basierend auf dem Betrag und löst Beziehungen nach Phasenwinkel auf.
sort([3+4i, 4+3i]) ans = 4.0000 + 3.0000i 3.0000 + 4.0000i
Dies liegt am Phasenwinkel:
angle(3+4i) ans = 0.9273 angle(4+3i) ans = 0.6435
Der relationale Operator „gleich“ ==
erfordert gleiche Real- und Imaginärteile. Die anderen binären relationalen Operatoren – >
<
, >=
und <=
– ignorieren den Imaginärteil der Zahl und berücksichtigen nur den Realteil.
Matrixoperatoren
Ausdrücke verwenden vertraute arithmetische Operatoren und Rangfolgeregeln.
| Addition |
- | Subtraktion |
| Multiplikation |
| Division |
| Linksdivision |
| Potenz |
| Komplexe Transponierte des Konjugats |
| Angabe der Auswertungsreihenfolge |
Arrayoperatoren
Außerhalb der Welt linearer Algebra werden Matrizen zu zweidimensionalen numerischen Arrays. Arithmetische Operationen an Arrays werden elementweise ausgeführt. Dies bedeutet, dass zwar Addition und Subtraktion für Arrays und Matrizen identisch sind, doch dass sich multiplikative Operationen unterscheiden. MATLAB verwendet einen Punkt, oder Dezimalpunkt, als Teil der Schreibweise für multiplikative Arrayoperationen.
Die Liste der Operatoren umfasst Folgendes:
| Addition |
| Subtraktion |
| Elementweise Multiplikation |
| Elementweise Division |
| Elementweise Linksdivision |
| Elementweise Potenz |
| Nicht konjugierte Transponierte des Arrays |
Wenn das magische Quadrat von Dürer mithilfe der Arraymultiplikation mit sich selbst multipliziert wird,
A.*A
ist das Ergebnis ein Array, das die Quadrate der Ganzzahlen von 1 bis 16 enthält – und zwar in einer ungewöhnlichen Reihenfolge:
ans = 256 9 4 169 25 100 121 64 81 36 49 144 16 225 196 1
Erstellen von Tabellen
Arrayoperationen sind hilfreich beim Erstellen von Tabellen. Angenommen, n
ist der Spaltenvektor
n = (0:9)';
Dann erstellt
pows = [n n.^2 2.^n]
eine Tabelle mit Quadraten und Zweierpotenzen:
pows = 0 0 1 1 1 2 2 4 4 3 9 8 4 16 16 5 25 32 6 36 64 7 49 128 8 64 256 9 81 512
Die elementaren mathematischen Funktionen werden für Arrays elementweise ausgeführt. Daher erstellt
format short g x = (1:0.1:2)'; logs = [x log10(x)]
eine Tabelle mit Logarithmen.
logs = 1.0 0 1.1 0.04139 1.2 0.07918 1.3 0.11394 1.4 0.14613 1.5 0.17609 1.6 0.20412 1.7 0.23045 1.8 0.25527 1.9 0.27875 2.0 0.30103
Funktionen
MATLAB stellt zahlreiche elementare mathematische Standardfunktionen zur Verfügung, wie zum Beispiel abs
, sqrt
, exp
und sin
. Das Ziehen der Quadratwurzel oder das Erstellen des Logarithmus einer negativen Zahl ist kein Fehler. Das entsprechende komplexe Ergebnis wird automatisch erstellt. MATLAB stellt zudem viele hochentwickelte mathematische Funktionen zur Verfügung, einschließlich Bessel- und Gammafunktionen. Die meisten dieser Funktionen akzeptieren komplexe Argumente. Um eine Liste der elementaren mathematischen Funktionen aufzurufen, geben Sie Folgendes ein:
help elfun
Um eine Liste hochentwickelter mathematischer und Matrixfunktionen aufzurufen, geben Sie Folgendes ein:
help specfun help elmat
Einige der Funktionen wie sqrt
und sin
sind integriert. Integrierte Funktionen sind Teil des MATLAB Kerns, sodass sie äußerst effizient sind. Allerdings kann auf die numerischen Details nicht einfach zugegriffen werden. Andere Funktionen sind in die MATLAB Programmiersprache implementiert, sodass auf ihre numerischen Details zugegriffen werden kann.
Es gibt einige Unterschiede zwischen integrierten und anderen Funktionen. Beispielsweise können Sie den Code integrierter Funktionen nicht sehen. Bei anderen Funktionen können Sie den Code sehen und ihn bei Bedarf sogar ändern.
Verschiedene Sonderfunktionen stellen Werte hilfreicher Konstanten zur Verfügung.
3.14159265... | |
Imaginäre Einheit, | |
Identisch mit | |
Relative Genauigkeit von Gleitkommazahlen, | |
Kleinste Gleitkommazahl, | |
Größte Gleitkommazahl, | |
Unendlichkeit | |
Not-a-Number; eine Zahl, die keine Zahl ist |
Unendlichkeit wird durch Division eines Werts ungleich null durch null oder durch Auswertung gut definierter mathematischer Ausdrücke generiert, die überlaufen, das heißt, sie überschreiten realmax
. NaN wird generiert, indem versucht wird, Ausdrücke wie 0/0
oder Inf
-Inf
, die keine gut definierten mathematischen Werte aufweisen, auszuwerten.
Die Funktionsnamen sind nicht reserviert. Sie können diese nach Belieben mit einer neuen Variablen überschreiben. Beispiel:
eps = 1.e-6
Und anschließend können Sie diesen Wert in nachfolgenden Berechnungen verwenden. Die Originalfunktion kann wie folgt wiederhergestellt werden:
clear eps
Beispiele für Ausdrücke
Sie haben bereits verschiedene Beispiele für MATLAB Ausdrücke gesehen. Hier einige weitere Beispiele zusammen mit den resultierenden Werten:
rho = (1+sqrt(5))/2 rho = 1.6180 a = abs(3+4i) a = 5 z = sqrt(besselk(4/3,rho-i)) z = 0.3730+ 0.3214i huge = exp(log(realmax)) huge = 1.7977e+308 toobig = pi*huge toobig = Inf