WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Was ist die Matlab Matrix?

 

Cecil Boox
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 25.10.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.10.2011, 09:59     Titel: Was ist die Matlab Matrix?
  Antworten mit Zitat      
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 Smile
_________________

Ein Beitrag der seneos Akademie in Köln
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 25.10.2011, 12:42     Titel: Re: Was ist die Matlab Matrix?
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Cecil Boox
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 25.10.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.10.2011, 13:13     Titel: Hallo Jan
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 25.10.2011, 13:45     Titel: Re: Hallo Jan
  Antworten mit Zitat      
Hallo Cecil Boox,

Ich habe das auch auf der Seneos-Seite gepostet. Dort gehört es eigentlich auch eher hin.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.