Borrar filtros
Borrar filtros

vector multiplication .* vs *

76 visualizaciones (últimos 30 días)
Omar A Jimenez
Omar A Jimenez el 19 de Nov. de 2017
Respondida: John Keevil el 18 de Feb. de 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 comentario
Stephen23
Stephen23 el 19 de Nov. de 2017
Editada: Stephen23 el 19 de Nov. de 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:

Iniciar sesión para comentar.

Respuesta aceptada

Walter Roberson
Walter Roberson el 19 de Nov. de 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.

Más respuestas (2)

Shomari Edwards
Shomari Edwards el 29 de Ag. de 2019
24.5 + 64/3.52 + 8.3 · 12.53
3 76.428/15
  1 comentario
Walter Roberson
Walter Roberson el 29 de Ag. de 2019
It is not clear what you are trying to convey here?

Iniciar sesión para comentar.


John Keevil
John Keevil el 18 de Feb. de 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.

Categorías

Más información sobre Matrix Indexing en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by