Vectorization of matrices multiplication

7 visualizaciones (últimos 30 días)
Eugenio Grabovic
Eugenio Grabovic el 21 de En. de 2019
Comentada: Eugenio Grabovic el 21 de En. de 2019
Hi,
i have some trouble finding out how to vectorize the following loop:
for k = 1:PointsLength
h(k,1) = transpose(PointsA(:,k) - PointsB(:,k))*normals(:,k);
end
The first thing that comes into my mind is doing this:
all the matrices have 3 x n dimensions and i want h to be 1 x n vector
k = 1:PointsLength
h(:) = transpose(PointsA(:,k) - PointsB(:,k))*normals(:,k);
but its obviously it's not the same thing since im trying to achieve row column multiplication only in pairs ( just k_th row times k_th column, without k_th row times other columns), and thus gives error cause he expects h to be n x n.
Any ideas? Thank you in advance.
  2 comentarios
madhan ravi
madhan ravi el 21 de En. de 2019
Probably you want to use .* (element-wise multiplication) ?
Eugenio Grabovic
Eugenio Grabovic el 21 de En. de 2019
k = 1:PointsLength
h(:) = transpose(PointsA(:,k) - PointsB(:,k)).*normals(:,k);
gives error cause he wants matrices to have the same dimensions (no transpose),
but by doing that i would only achieve (i_th,j_th) element multiplication only, with a 3 x n h matrix as a result (not what i was looking for).

Iniciar sesión para comentar.

Respuesta aceptada

Jan
Jan el 21 de En. de 2019
Editada: Jan el 21 de En. de 2019
h = dot(PointsA - PointsB, normals).'
or
h = sum((PointsA - PointsB) .* normals, 1).'
  1 comentario
Eugenio Grabovic
Eugenio Grabovic el 21 de En. de 2019
Oh wow, i feel so stupid... thank you very much !

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Creating and Concatenating Matrices 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