Borrar filtros
Borrar filtros

Avoiding for loops for multiplication of multidimensional matrices

1 visualización (últimos 30 días)
I have to do a matrix multiplication of two vectors in principle to get a scalar. The vectors are (1 x 2) and (2 x 1). However, I need to do this for a lot of cases. Those cases are defined in matrix form like the following.
for i = 1:Niter
for k = 1:Cn
for ti = 1:T
E(i, k, ti) = [D(ti, :) - squeeze(y(i, k, ti, :)).'] * [D(ti, :) - squeeze(y(i, k, ti, :)).'].'
end
end
end
So, `D` is a matrix with T x 2 size, y is a 4D matrix with size `Niter x Cn x T x 2`. Is there a way to avoid these for loops? I just want to compute the row and column vectors for all different cases `Niter`, `Cn` and `T`.

Respuesta aceptada

Matt J
Matt J el 1 de Jun. de 2022
Editada: Matt J el 1 de Jun. de 2022
D=reshape(D,1,1,T,2);
E=vecnorm(D-y,2,4).^2;
  3 comentarios
Matt J
Matt J el 1 de Jun. de 2022
The 3rd argument to vecnomr should have been 4, correct.
Tworit Dash
Tworit Dash el 1 de Jun. de 2022
Sorry yes, I meant the 3rd argument.

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