Matrix-vector multiplication vectorization

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)

 채택된 답변

Guillaume
Guillaume 2016년 8월 30일

2 개 추천

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

추가 답변 (1개)

John D'Errico
John D'Errico 2016년 8월 30일
편집: John D'Errico 2016년 8월 30일

2 개 추천

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.

카테고리

도움말 센터File Exchange에서 Logical에 대해 자세히 알아보기

질문:

2016년 8월 30일

댓글:

2022년 7월 2일

Community Treasure Hunt

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

Start Hunting!

Translated by