Ich habe eine 3D (oder allgemein n-dimensional) Matrix A
mit Abmessungen3D-Matrix, die durch Spaltenvektormultiplikation
size(A) = [d1 d2 d3 ... dn].
Jetzt möchte ich mit einem Spaltenvektor v
über eine der Dimensionen eine Vektormultiplikation tun (wie ich in 2 Dimensionen tun würde, wo ich einen Vektor zurück bekommen - zum Beispiel für d1 = 2
, d3 = 4
und size(v) = d2
), so dass
(A*d)_i = sum(a_ij*v_j).
Daher ich um eine Dimension reduzieren will.
Gibt es eine Matlab-Funktion (andere als Looping), die
(A*v)_ij = sum(A_ijk*v_k).
Ich hoffe, das war klar für eine d3
-dimensional Spaltenvektor v zurück.
Danke!
in Ordnung - vielen Dank. Ich habe auf etwas Glatteres gehofft, aber das ist fair genug, denke ich. – user1763302
Diese Methode funktioniert nur, wenn die zu multiplizierende Dimension die letzte Dimension der N-d-Matrix ist. Es wäre schön, wenn der Code für jede Dimension 1 ... N der N-D-Matrix funktioniert. Scheinbar möglich mit "dimshift" am Anfang und am Ende. – cjh
Es scheint in der Tat machbar zu sein mit "Permutieren". Es würde ein paar Minuten dauern, darüber nachzudenken. Fühlen Sie sich frei, meine Antwort zu bearbeiten oder Ihre eigene hinzuzufügen. Ich habe bald eine Frist. – Oli