Matrix-vector multiplication vectorization
    227 views (last 30 days)
  
       Show older comments
    
Dear All, I have a simple 3*3 matrix(A) and large number of 3*1 vectors(v) that I want to find A*v multiplication for all of the v vectors. Instead of using "for" loop which takes so much time, how can I vectorize the matrix multiplication? Example: A=[1 2 3;4 5 6;7 8 9]; v=[1 2 3; 4 5 6; 7 8 9;10 11 12;13 14 15] (5 set of 3*1 vectors)
0 Comments
Accepted Answer
  Guillaume
      
      
 on 30 Aug 2016
        Note that v=[1 2 3; 4 5 6; 7 8 9;10 11 12;13 14 15] is 5 rows of 1x3 vectors, not 3x1 vectors.
Simply multiply your matrix by the vector matrix to get all the result vectors at once:
A=[1 2 3;4 5 6;7 8 9]; 
v=[1 2 3; 4 5 6; 7 8 9;10 11 12;13 14 15];
v = v.';  %transpose so that v is indeed 5 columns of 3x1 vectors
B = A*v   %each column of B is A*each column of v by definition of matrix multiplication
More Answers (1)
  John D'Errico
      
      
 on 30 Aug 2016
        
      Edited: John D'Errico
      
      
 on 30 Aug 2016
  
      If you are storing tham in a 5x3 array, then they are 1x3 vectors, not 3x1. There is a difference.
Anyway,
A*v'
Won't work? Did you try it? If you insist on having the result be transposed again, then you could do it as:
(A*v')'
or you might recognize that this is the same as
v*A'
As long as all arrays are real. If they are complex, then becareful, as ' and .' are different operators, and you need to know which is correct.
See Also
Categories
				Find more on Logical in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!