Verfasst am: 28.07.2010, 14:47
Titel: Matrixmultiplikation mit einem Ergebnis höherer Dimension
Hallo zusammen,
ich bin auf der Suche nach einem Befehl, der mir folgendes liefert:
Ich habe eine Matrix A R^MxN und einen Vektor x R^L.
Ich möchte diese nun so multiplizieren, dass ich als Ergebnis eine Matrix G R^MxNxL bekomme. Das bedeutet, dass diese Matrix aus 3 Dimensionen bestehen soll. In der 3. Dimension befinden sich dann die Matrizen A skalar multipliziert mit den Einträgen von x.
Kennt jemand eine Möglichkeit, dies OHNE Schleifen zu programmieren? Das wäre super!
kannst Du zumindest den Code mit Schleifen posten? Dann müssten wir nicht alles neu erfinden. Sehe ich das richtig, dass dei beiden Arrays keine einzige gemeinsame Dimensionsgröße haben?! Meinst eine elementweise Multiplikation oder die üblichen Dot-Produkte?
Ich habe nun erstmal obige Lösung verwendet.
Leider bin ich dabei nun auf ein Problem gestoßen. Wenn der Vektor x nur aus einem Element ist, erhalte ich als Ergebnis lediglich die Matrix A. Ich möchte aber ein Feld, welches drei Dimensionen hat, wobei die letzte dann nur aus einem Element besteht, also:
ergebnis R^(m x n x 1)
wobei A R^(m x n)
Kennt jemand eine Lösung dafür, wie ich die zusätzliche Dimension in das Feld bekomme?
Das kann natürlich ziemlich tückisch werden, wenn man per NDIMS die Anzahl der Dimensionen vergleicht.
Das Verhalten erscheint ganz normal, wenn es um Spalten-Vektoren geht:
Danke für die Hinweise.
Leider benötige ich die dritte Dimension, auch wenn sie eigentlich nicht vorhanden ist, um folgende Rechnung durchzuführen:
ergebnis=B.*daten(k,j,i)
k, j und i sind Vektoren, die nach meiner obigen Definition L, N und M Elemente haben.
B ist das "Ergebnis" aus den vorherigen Posts und wird mithilfe von 3 Vektoren berechnet.
Wenn L=1 ist, hat B nur noch 2 Dimensionen, während daten(k,j,i) 3 hat. Daher ist die elementweise Multiplikation nicht durchführbar.
Ich möchte es aber so programmieren, dass L, N und M jeweils 1 oder ungleich 1 sein können.
Pardon, der Fehler, den ich erhielt, hatte eine andere Ursache.
MatLab ist also in der Lage, überflüssige Dimensionen zu irgnorieren.
Danke für die Hilfe!
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
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.