|
|
Was ist die Matlab Matrix? |
|
Cecil Boox |
Forum-Newbie
|
|
Beiträge: 2
|
|
|
|
Anmeldedatum: 25.10.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 25.10.2011, 09:59
Titel: Was ist die Matlab Matrix?
|
|
|
|
|
Diese Frage ging an die Ingenieure der seneos GmbH, die folgende Antwort gegeben haben:
Die Matlab Matrix ist eine Datenstruktur, die auch Feld bezeichnet werden kann und sich aus Elementen skalarer Datentypen zusammensetzt. Die Elemente sind ein- oder mehrdimensional angeordnet und können sowohl feste Werte (Ganzzahl, Gleitkommazahl) enthalten, als auch aus Variablen bestehen.
Vektoren und Skalare sind Spezialfälle von Matrizen.
Vektoren werden durch eine 1xn-Matrix, Skalare durch eine 1x1-Matrix dargestellt.
Eine nxm-Matrix besteht aus mehreren Vektoren.
Für die folgenden Beispiele, werden vorab zwei Matrizen angelegt:
Eingaben werden mit vorangestelltem >> gekennzeichnet.
Ausgaben aus Matlab erhalten keine vorangestellten Zeichen.
Die Eingabe von Matrizen erfolgt in eckigen Klammern [] wobei die Spalten durch Komma oder Leerzeichen und die Zeilen durch Semikolon oder Zeilenumbruch getrennt werden.
Somit besteht eine Matrix aus Zeilen- und Spaltenvektoren
>> M=[1 2 3; 4 5 6; 7 8 9] oder
>> M =[[1 2 3], [4 5 6], [7 8 9]]
>> M=[v1;v2;v3] mit v1=[1 2 3], v2=[4 5 6], v3=[7 8 9]
M =
1 2 3
4 5 6
7 8 9
Matrixelemente können durch beliebige Matlab-Ausdrücke dargestellt werden:
>> x = [ 3, sqrt(2), (2+5)/5*3 ]
x =
3.0000 1.4142 4.2000
Matrizen können auch verkettet werden.
>> r = [ 18 23 44];
>> A = [M;r]
A =
1 2 3
4 5 6
7 8 9
18 23 44
Es ist auch möglich Untermatrizen aus einer Matrix herauszuziehen.
Aus Matrix A erhalten wir mit dem Ausdruck:
>> B = A(2:3,: )
B =
4 5 6
7 8 9
Die Indizierung der Matrix erhält zwei Übergabeparameter:
2:3 beschreibt die Zeilenvektoren für die Untermatrix. Der Doppelpunkt steht für ein von - bis. In diesem Fall werden aus der Matrix alle Zeilen von Zeile 2 bis Zeile 3 selektiert.
Der zweite Parameter beschreibt die Spaltenvektoren für die Untermatrix. Der alleinstehende Doppelpunkt bedeutet, dass alle Spaltenvektoren ausgewählt wurden (In diesem Fall von Spalte 1 bis Spalte 3).
Somit ist
>> B = A
das gleiche wie
>> B = A(:,: ).
Die mathematischen Operatoren können ebenfalls auf Vektoren und Matrizen angewendet werden.
Für die Beispiele mit arithmetischen Operatoren werden zwei Matrizen angelegt:
Anlegen der Matrix M1
>> M1 = [1,2;3,4]
M1 =
1 2
3 4
Anlegen der Matrix M2
>> M2=[2 4; 1 5]
M2 =
2 4
1 5
Die an einer Matrix in Matlab ausführbaren Operatoren sind:
Addition
Subtraktion
Multiplikation
Rechtsdivision
Linksdivision
Potentieren
Transponieren
Inversbildung
Für weitere Operatoren in der Matlab Konsole >> help ! eingeben.
Die Addition (+) ergibt
>> M1+M2
ans =
3 6
4 9
Die Substraktion (-) ergibt
>> M1-M2
ans =
-1 -2
2 -1
Die Multiplikation mit einem Skalar (k) ergibt
>> k = 5;
>> M2 = M1*k
M2 =
5 10
15 20
Die Matrixmultiplikation (*) ergibt
>> M1*M2
ans =
4 14
10 32
Die Rechtsdivision (/): Das Ergebnis von M = B/A ist die Lösung der Gleichung M*A = B
>> A = [1,2,3;5,6,9]
>> B= [2,4,7;8,1,4]
>> M = B/A
M =
0.4429 0.0091
1.1936 0.3050
Die Linksdivision (\): Das Ergebnis von M = A\B ist die Lösung der Gleichung A*M = B
>> A = [1,2,3;5,6,9]
>> B= [2,4,7;8,1,4]
>> M = A\B
M =
0.6458 0.7083 1.0625
0 0 0
-0.0417 0.0833 0.1250
Die Potenzierung (^) einer Matrix ist ausschließlich mit einem Skalar möglich. Sie ergibt
>> M1^2
ans =
7 10
15 22
Die elementweise Potenzierung (.^) mehrdimensionaler Vektoren ist auch möglich. Sie ergibt:
>> M1.^2
ans =
1 4
9 16
>> M1.^M2
ans =
1 16
3 1024
Das Transponieren einer Matrix (') ergibt
>> M1'
ans =
1 3
2 4
Die Inverse einer Matrix (inv) ergibt
>> inv(M1)
ans =
-2 1
0.6667 -0.5000
Wir freuen uns über Feedback zu dem Artikel hier in dem Forum
_________________
Ein Beitrag der seneos Akademie in Köln
|
|
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 25.10.2011, 12:42
Titel: Re: Was ist die Matlab Matrix?
|
|
|
|
|
Hallo Cecil Boox,
Ich würde zum Thema "Was ist eine Matrix in MATLAB" zunächst mal das Lesen des Kapitels "Getting Started->Matrices and Arrays" der Dokumentation empfehlen. Eigentlich ist das Thema dort erschöpfend abgehandelt.
Ein paar Anmerkungen:
Zitat: |
Die Matlab Matrix ist eine Datenstruktur, die auch Feld bezeichnet werden kann ... |
Gefahr der Verwechselung "Feld" und "Field", also Felder eines Structs. In MATLAB werden Matrizen nie als "Felder" bezeichnet.
Zitat: |
... und sich aus Elementen skalarer Datentypen zusammensetzt. |
Es gibt auch eine Matrix aus STRUCTs: "M = struct('Field', {1,2;3,4})".
Zitat: |
Die Elemente sind ein- oder mehrdimensional angeordnet ... |
"Mehrdimensional" heißt hier "zweidimensional", ein Objekt mit 3 oder mehr Dimensionen heißt "Array" in MATLAB. Hier wäre es also angebracht zu erwähnen, dass Skalare spezielle Matrizen sind, und Matrizen spezielle Arrays.
Zitat: |
... und können sowohl feste Werte (Ganzzahl, Gleitkommazahl) enthalten, als auch aus Variablen bestehen. |
Ich weiß, was gemeint ist, siehe obige Struct-Matrix. Wenn man aber noch nicht weiß, was eine Matrix ist, ist dieser Satz verwirrend.
Zitat: |
Vektoren und Skalare sind Spezialfälle von Matrizen.
Vektoren werden durch eine 1xn-Matrix, Skalare durch eine 1x1-Matrix dargestellt. |
Auch [m x 1] Arrays sind "Vektoren". Hier wäre eine Unterscheidung Zeilen- und Spalten-Vektor sinnvoll. Zudem gibt es leere Matrizen der Größe [0x0], [mx0] und [0xn].
Zitat: |
Eine nxm-Matrix besteht aus mehreren Vektoren. |
Nein, das stimmt in MATLAB definitiv nicht. Es gibt in C++ und anderen Programmiersprachen einen Matrix-Typ, der aus einzelnen Vektoren zusammengesetzt wird. Aberin MATLAB ist ein Array elementar. Das war ein Design-Kriterium für MATLAB1.0 und deswegen heißt die Sprache auch "MAT"LAB. Siehe dieses Beispiel:
Zitat: |
>> M=[1 2 3; 4 5 6; 7 8 9] oder
>> M =[[1 2 3], [4 5 6], [7 8 9]] |
Hier wäre es hilfreich ganz explizit zu erwähnen, das beide Methoden zu dem exakt gleichen ergebnis führen, dass das zweite M also kein Vektor aus Vektoren ist. Das wird zwar in:
Zitat: |
>> M=[v1;v2;v3] mit v1=[1 2 3], v2=[4 5 6], v3=[7 8 9]
M =
1 2 3
4 5 6
7 8 9 |
eigenlich gezeigt, hier wäre aber vielleicht eine Unterscheidung M1, M2, M3, ==> isequal(M1, M2, M3) => TRUE sinnvoll.
Zitat: |
Die Potenzierung (^) einer Matrix ist ausschließlich mit einem Skalar möglich. |
Siehe "3 ^ rand(2)".
Zitat: |
Das Transponieren einer Matrix (') ergibt
>> M1'
ans =
1 3
2 4 |
Hier muss man unbedingt ' und .' unterscheiden: Bei komplexen Zahlen ist ' nämlich die konjuguierte Transponierte, während .' die nicht-konjugierte ist. Eine Erwähnung der equivalenten TRANSPOSE und CTRANSPOSE-Befehle wäre hilfreich.
Mir wird nicht klar, für welche Zielgruppe ist der Artikel konzipiert ist.
Gruß, Jan
|
|
|
Cecil Boox |
Themenstarter
Forum-Newbie
|
|
Beiträge: 2
|
|
|
|
Anmeldedatum: 25.10.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 25.10.2011, 13:13
Titel: Hallo Jan
|
|
Danke für dein tolles Feedback. Ich werde das gleich an die Ingenieure weiterleiten!
Der Artikel soll eine allgemeine Info zu Matlab Matrixen sein. Bei so was bin ich kein Fan von Zielgruppen, aber falls es eine gibt, dann Interessierte an MATLAB, die sich noch nicht so gut damit auskennen.
Viele Grüße und Dank.
Cecil
_________________
Ein Beitrag der seneos Akademie in Köln
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 25.10.2011, 13:45
Titel: Re: Hallo Jan
|
|
Hallo Cecil Boox,
Ich habe das auch auf der Seneos-Seite gepostet. Dort gehört es eigentlich auch eher hin.
Gruß, Jan
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2024
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|