Ich stehe grade etwas auf dem Schlauch:
Wenn ich Deinen Code eingebe, erhalte ich als Ausgabe einen 6x1-Vektor. Kann es sein, dass Du bei dem Z einen Laufindex vergessen hast?
Ansonsten funktioniert eine 3D-Multiplikation über:
Code:
zCell = arrayfun(@(ind) R(:,:,ind)*V(:,ind), 1:size(R,3),'uniformOutput',false);
Z = cat(3, zCell{:});
Ergebnis ist eine 6x1x100-Matrix, was anhand der Eingabedaten auch richtig ist.
Falls Du jedoch eine 6x100-Matrix brauchst, müsstest Du das Ergebnis noch mit dem Befehl shiftdim und/oder Transposition weiterbearbeiten.
ich hol das Thema nochmal hoch, da es mein "Problem" betrifft. Ich moechte ebenfalls jede "Schicht" eines 3D Vektors mit den einzelnen Elementen eines Vektors multiplizieren. Denke folgendes Beispiel verdeutlicht es:
Nun moechte ich alle Werte der 1. Schicht von "A" [A(:,:,1)] mit dem ersten Element von "B" multiplizieren, dann alle Werte der 2. Schicht von "A" [A(:,:,2)] mit dem zweiten Element von "B" mult. und so weiter. In diesem Beispiel soll also folgendes Ergebnis herauskommen:
jedoch ist arrayfun doch auch nur eine Schleife und der Ausdruck sieht nicht gerade "praktisch" aus.
Es muss auch nicht unbedingt eine Multiplikation sein, da ich ja eigentlich nur aus dem Vektor "B" eine 2x2x3 Matrix erstellen moechte wobei eben die Werte jeder Schicht die Werte von "B" annehmen sollen (siehe Matrix "C").
Danke, aber da hätte ich auch selber draufkommen können...
Natürlich. Ich bin davon überzeugt, dass 99% der Fragenden hier irgendwann auch alleine auf eine Antwort kommen würden. Aber erstens kann das ein bisschen dauern (so ein bis zwei Jahre...), und zweitens wird man als Mensch blind für neue Ideen, wenn man mal eine funktionierende Lösungen gefunden hat.
Ich habe es versucht ohne RESHAPE hinzubekommen. Ich vermute, es sollte möglich sein, aber ich bekam nur Lösungen hin, bei denen ich hinterher ein langsames PERMUTE benötigte.
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
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.