MATLAB Operatoren meistern: Arithmetik, Logik, Bitweise Operationen
Ein Operator ist ein Symbol, das den Compiler anweist, spezifische mathematische oder logische Manipulationen durchzuführen. MATLAB operiert primär auf ganzen Matrizen und Arrays. Daher funktionieren Operatoren sowohl auf Skalaren als auch auf nicht-skalarer Daten. MATLAB erlaubt folgende elementare Operationen:
- Arithmetische Operatoren
- Relationale Operatoren
- Logische Operatoren
- Bitweise Operationen
- Mengenoperationen
Arithmetische Operatoren
Zwei Typen arithmetischer Operationen:
- Matrix-Arithmetik (wie in Linearer Algebra definiert)
- Array-Arithmetik (elementweise, auf 1D- und mehrdim. Arrays)
Matrix- und Array-Operatoren unterscheiden sich durch den Punkt (.). Addition/Subtraktion sind identisch. Übersicht:
| Nr. | Operator & Beschreibung | |
|---|---|---|
| 1 | + Addition oder unärer Plus. A+B addiert Werte in A und B. Gleiche Größe, außer einer ist Skalar. Skalar kann zu Matrix beliebiger Größe addiert werden. | |
| 2 | - Subtraktion oder unärer Minus. A-B subtrahiert B von A. Größenregeln wie bei Addition. | |
| 3 | * Matrixmultiplikation. C = A*B ist das lineare algebraische Produkt. Spaltenanzahl von A = Zeilenzahl von B. Skalar kann Matrix beliebiger Größe multiplizieren. | |
| 4 | .* Array-Multiplikation (elementweise). A und B gleiche Größe, außer einer ist Skalar. | |
| 5 | / | Slash / Matrix-Rechtsdivision. B/A ≈ B*inv(A). Genauer: B/A = (A'\B')'. |
| 6 | ./ | Array-Rechtsdivision. A./B hat Elemente A(i,j)/B(i,j). Größenregeln wie oben. |
| 7 | \ | Backslash / Matrix-Linksdivision. Bei quadratischer A: A\B ≈ inv(A)*B (anders berechnet). Lösung von AX=B. Warnung bei schlecht konditionierter A. |
| 8 | .\ | Array-Linksdivision. A.\B hat Elemente B(i,j)/A(i,j). Größenregeln wie oben. |
| 9 | ^ | Matrixpotenz. X^p ist X zur Potenz p (p Skalar). Bei ganzzahligem p durch wiederholtes Quadrieren. Bei negativem p erst Inversion. Sonst Eigenwerte/Vektoren. |
| 10 | .^ | Array-Potenz. A.^B hat Elemente A(i,j)^B(i,j). Größenregeln wie oben. |
| 11 | ' | Matrixtransposition. A' ist algebraische Transponierte. Für komplexe Matrizen: konjugiert-transponiert. |
| 12 | .' | Array-Transposition. A.' transponiert ohne Konjugation. |
Relationale Operatoren
Funktionieren auf Skalaren und Arrays. Bei Arrays elementweiser Vergleich, Ergebnis: logisches Array gleicher Größe (1=true, 0=false).
| Nr. | Operator & Beschreibung |
|---|---|
| 1 | < Kleiner als |
| 2 | <= Kleiner gleich |
| 3 | > Größer als |
| 4 | >= Größer gleich |
| 5 | == Gleich |
| 6 | ~= Ungleich |
Logische Operatoren
Zwei Typen:
Elementweise – operieren auf korrespondierenden Elementen logischer Arrays. Symbole:
&(AND),|(OR),~(NOT).Kurzschluss (Short-circuit) – operieren auf Skalaren/logischen Ausdrücken. Symbole:
&&(AND),||(OR).
Bitweise Operationen
Bitweise Operatoren arbeiten bitweise. Wahrheitstafeln für &, |, ^:
| p | q | p & q | p | q | p ^ q |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 | 1 |
| 1 | 1 | 1 | 1 | 0 |
| 1 | 0 | 0 | 1 | 1 |
Beispiel: A=60 (0011 1100), B=13 (0000 1101):
A&B = 0000 1100 A|B = 0011 1101 A^B = 0011 0001 ~A = 1100 0011
MATLAB-Funktionen für bitweise Operationen:
| Funktion | Zweck |
|---|---|
| bitand(a,b) | Bitweises AND von Integer a und b |
| bitcmp(a) | Bitweises Komplement von a |
| bitget(a,pos) | Bit an Position pos im Integer-Array a |
| bitor(a,b) | Bitweises OR von a und b |
| bitset(a,pos) | Bit an Position pos von a setzen |
| bitshift(a,k) | a um k Bits nach links schieben (×2^k). Negative k: rechts schieben (/2^|k|), Rundung Richtung -∞. Überlaufbits werden abgeschnitten. |
| bitxor(a,b) | Bitweises XOR von a und b |
| swapbytes | Byte-Reihenfolge vertauschen |
Mengenoperationen
Funktionen für Vereinigungs-, Durchschnitts- und Mitgliedschaftstests:
| Nr. | Funktion & Beschreibung | |
|---|---|---|
| 1 | intersect(A,B) Schnittmenge zweier Arrays; gemeinsame Werte in sortierter Reihenfolge. | |
| 2 | intersect(A,B,'rows') Behandelt Zeilen als Entitäten; gemeinsame Zeilen in sortierter Reihenfolge. | |
| 3 | ismember(A,B) Array gleicher Größe wie A mit 1 (true), wo Elemente von A in B gefunden werden, sonst 0. | |
| 4 | ismember(A,B,'rows') Zeilen als Entitäten; Vektor mit 1, wo Zeilen von A auch Zeilen von B sind. | |
| 5 | issorted(A) | True, wenn Elemente von A sortiert sind (A == sort(A)). Vektor oder N×1/1×N Zellenarray von Strings. |
| 6 | issorted(A,'rows') | True, wenn Zeilen von 2D-Matrix A sortiert sind (A == sortrows(A)). |
| 7 | setdiff(A,B) | Differenz: Werte in A, nicht in B. Sortiert. |
| 8 | setdiff(A,B,'rows') | Zeilen als Entitäten; Zeilen aus A, nicht in B. Sortiert. 'rows' unterstützt keine Cell-Arrays. |
| 9 | setxor Symmetrische Differenz (exklusives ODER) zweier Arrays. | |
| 10 | union Vereinigung zweier Arrays. | |
| 11 | unique Eindeutige Werte im Array. |
MATLAB
- C# Operatoren – Umfassender Leitfaden zu Operatoren in C#
- C++-Operatoren meistern: Ein vollständiger Leitfaden mit praktischen Beispielen
- C Programmierungsoperatoren meistern: Ein umfassender Leitfaden
- Python-Operatoren meistern: Umfassender Leitfaden
- Java Operatoren meistern: Typen, Syntax und praktische Beispiele
- Umfassender Leitfaden zu C-Operatoren: Typen, Funktionen & Beispiele
- MATLAB: Umfassender Überblick über die führende numerische Computing-Umgebung
- Variablen in MATLAB verstehen: Grundlagen & Beispiele
- Wichtige MATLAB-Befehle für effizientes Computing
- MATLAB Datentypen: Umfassender Leitfaden