Wie führt man eine Vektorisierung zur Summierung für die Oktavimplementierung durch?

Aug 15 2020

Ich versuche, die Transformation von einer Summationsform in eine Vektorisierung (oder eine Form von Matrixmultiplikationen) zu verstehen, um sie in einer Programmiersprache (Oktave oder Python oder was auch immer) zu implementieren, ohne for-Schleifen zu verwenden.

Der Ausdruck, den ich vektorisieren möchte, ist dieser

Das Dokument, aus dem ich dieses Formular erhalten habe, hat versucht, den Vorgang zu erklären

Bisher ist dies klar, mit Ausnahme von (1), das das Dokument versucht hat, es wie folgt zu erklären:

Ich war verwirrt, weil ich von der Matrizenmultiplikation weiß, dass man eine Zeile mit einer Spalte multipliziert. Ich kann diesen Schritt nicht verstehen, wo die Multiplikation hier wie das Multiplizieren einer Spalte mit einer Zeile ist.

Könnten Sie den letzten Schritt etwas näher erläutern?

Antworten

1 kidkkr Oct 22 2020 at 10:11

Sie können sich einen Spaltenvektor als Element der Matrix vorstellen. Lassen Sie es mich an einem einfachen Beispiel erklären.

Unterstütz die$A$ist eine 3 mal 3 Matrix und$\vec{a_i}$ist es$i$te Spaltenvektor.

$$ A = \begin{bmatrix} a & b & c \\ d & e & f \\ g & h & i \end{bmatrix} = \begin{bmatrix} \vec{a_1} & \vec{a_2} & \vec{a_3} \end{bmatrix} $$für einen dreidimensionalen Vektor$\vec{v} = \begin{bmatrix} x & y & z \end{bmatrix} $,

$$ \begin{align} &A\vec{x}\\ &= \begin{bmatrix} ax + by + cz \\ dx + ey + fz \\ gx + hy + iz \end{bmatrix} \\ &= \begin{bmatrix} ax \\ dx \\ gx \end{bmatrix} + \begin{bmatrix} by \\ ey \\ hy \end{bmatrix} + \begin{bmatrix} cz \\ fz \\ iz \end{bmatrix}\\ &=x\vec{a_1} + y\vec{a_2} + z\vec{a_3} \\ &= \begin{bmatrix} \vec{a_1} & \vec{a_2} & \vec{a_3} \end{bmatrix} \begin{bmatrix} x \\ y \\ z \end{bmatrix} \\ &= \begin{bmatrix} \vec{a_1} & \vec{a_2} & \vec{a_3} \end{bmatrix} * \vec{v} \end{align} $$