2016-06-14 40 views
6

Ich suchte nach einer Möglichkeit, eine sequentielle Matrix-Multiplikation ähnlich wie die Summe (A, dim) oder prod (A, dim) Operationen für die Summe oder die elementweise Multiplikation tun.Matrix Multiplikation von Matrix-Sequenzen

zum Beispiel:

A = arrayfun(@(x) rand(5), 1:n, 'UniformOutput', false); 
P = A{1} * A{2} * ... * A{n}; % <-- search for an elegant way to do this 

würde ich es verwenden, um eine große Anzahl von Transfermatrizen zu multiplizieren.

+1

Wenn Sie auf der Suche nach Leistung sind, gehen Sie mit einer auf Initialisierung basierenden Loopy-Lösung. – Divakar

+0

Haben alle 'A' die gleichen Abmessungen? Dann könnten Sie [versuchen dies] (http://www.mathworks.com/matlabcentral/fileexchange/8773-multiple-matrix-multiplications--with-array-expansion-enabled). – thewaywewalk

Antwort

1

Verwenden Sie eine for-Schleife dafür. Es ist, was eine "elegante" Methode letztendlich tun würde.

P = A{1}; 
for i=2:length(A), P = P * A{i}, end