Dot produkt MxNxL -Array with a L-element vector

I have an array with MxNxL elements and I want to do a vector multiplication of every M,N element with a L-element vector so that I end up with a MxNx1 array that has the scalar product of each element array with the vector. Do you know how I can do this without having to do two loops over M and N in order to get the scalar products?
My slow solution looks like
For m= 1:M
For n=1:N
As (m,n,1)=dot(A(m,n,1:3),B(1:3))
End
End

 Akzeptierte Antwort

Andrei Bobrov
Andrei Bobrov am 24 Nov. 2017

0 Stimmen

m = size(A,1);
k = 3;
As = reshape(reshape(permute(A(:,:,1:k),[3,1,2]),k,[])'*reshape(B(1:k),[],1),m,[]);

Weitere Antworten (0)

Kategorien

Mehr zu Aerospace Blockset finden Sie in Hilfe-Center und File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by