vector multiplication .* vs *
249 views (last 30 days)
Show older comments
Omar A Jimenez
on 19 Nov 2017
Answered: John E Keevil
on 18 Feb 2022
I have these two vectors,
u= [ 1 2 -1 2 1]
v=[ -1 0 2 0 1]
why does v*u give me an error, whilst u*v' give me a -2, which is the result of a scalar multiplication?
u and v have the same size, so shouldn't v*u go through?
Thanks in advance.
1 Comment
Stephen23
on 19 Nov 2017
Edited: Stephen23
on 19 Nov 2017
@Omar A Jiminez: knowing the difference between matrix operations and element-wise operations is critical for being able to use MATLAB properly: not just multiplication, but transpose, division, and power too. You need to read the MATLAB documentation:
Accepted Answer
Walter Roberson
on 19 Nov 2017
v*u is algebraic matrix multiplication, for which the rule is that for an (M x N) * (P x Q) operation, that N must equal P and the output size is M x Q -- so (M x N) * (N x Q) giving M x Q. You have (1 x 5) * (1 x 5) which violates that rule. When you take u * v' then you have (1 x 5) * (5 x 1) giving 1 x 1.
v.*u would go element by element, result(K) = v(K) * u(K) which would be 1 x 5 result.
0 Comments
More Answers (2)
John E Keevil
on 18 Feb 2022
The simple answer to the question is:-
u= [ 1 2 -1 2 1] and v=[ -1 0 2 0 1] are both row vectors. You cannot matrix multiply them because the number of rows and columns are not compatible for matrix multiplication. To multiply u*v by matrix multiplication requires the number of rows of u to equal the number of columns of v, which it does not since u has one row and v has 5 columns. To correct that, you have to transpose v, then it has one column. v' is the transpose of v. This why u*v' works.
0 Comments
See Also
Categories
Find more on Matrix Indexing 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!