Ich bin auf der Suche für eine schnelle und flexible Möglichkeit, den folgend in Matlab zu berechnen, ohne mit einer Schleife:schneller Weg für Vektor/Array-Multiplikation in Matlab
c = 1:5;
A = reshape(1:5^3,5,5,5);
res= c(1)*A(:,:,1)+...+c(5)*A(:,:,5)
denke ich, die Arbeit mit
sum(A,3)
könnte ein schöner Weg sein, solange ich die Multiplikation entlang der dritten Dimension durchführen kann. Eine Lösung (aber mit Schleife) wäre:
val = zeros(length(c),length(c))
for i = 1:length(c)
val = val+c(i)*A(:,:,i)
end
Ich frage mich nur, wenn dies in einer einfacheren (und eleganten) Art und Weise vermeidet die Schleife durchgeführt werden.
besser ein liitle Bit Klären Sie Ihre Frage. Du willst was multiplizieren? – 16per9
Ich möchte res am Ende des Tages erhalten. Mit anderen Worten, ich möchte die ganze Matrix A (:,:, 1) mit dem Skalar c (1) multiplizieren, die ganze Matrix A (:, :, 2) mit dem Skalar c (2) und so weiter ... am Ende möchte ich jede dieser fünf Matrizen zusammenfassen, so dass res eine Matrix ist. – muffin1974