Multiply each column of a matrix by another matrix

2 vues (au cours des 30 derniers jours)
Miguel Morgado
Miguel Morgado le 9 Avr 2019
Commenté : Miguel Morgado le 10 Avr 2019
Hi,
I have 2 matrices, E of dimension 4x57 and J of dimension 4x4.
I'm trying to do the operation C = sqrt(E'*J*E) for each column of E, so that C ends up being a vector of length 57.
Any ideas of how to do this without a loop?
Thank you very much
  1 commentaire
Adam
Adam le 9 Avr 2019
E'*J*E
will result in a 57x57 matrix so what is the operation you are actually trying to achieve in ordder to get a length 57 vector?

Connectez-vous pour commenter.

Réponse acceptée

James Tursa
James Tursa le 9 Avr 2019
Modifié(e) : James Tursa le 9 Avr 2019
Another way:
C = sqrt(sum(E.*(J*E)));
For the sizes involved, you probably won't see any significant timing differences between this method and Johathan's method. For much larger sizes, this method does less overall calculations than Jonathan's method and may run faster as a result.
  1 commentaire
Miguel Morgado
Miguel Morgado le 10 Avr 2019
Worked perfectly, thank you very much

Connectez-vous pour commenter.

Plus de réponses (1)

Jon
Jon le 9 Avr 2019
If I understand your question correctly then the result of the "operation for each column of E" will be on the main diagonal of E'*J*E so you should get what you want using C = sqrt(diag(E'*J*E))

Catégories

En savoir plus sur Logical dans Help Center et File Exchange

Produits


Version

R2018b

Community Treasure Hunt

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

Start Hunting!

Translated by