Azzera filtri
Azzera filtri

Avoiding for loops for multiplication of multidimensional matrices

1 visualizzazione (ultimi 30 giorni)
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`.

Risposta accettata

Matt J
Matt J il 1 Giu 2022
Modificato: Matt J il 1 Giu 2022
D=reshape(D,1,1,T,2);
E=vecnorm(D-y,2,4).^2;
  3 Commenti
Matt J
Matt J il 1 Giu 2022
The 3rd argument to vecnomr should have been 4, correct.

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Creating and Concatenating Matrices in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by