Multiply each column of a matrix by another matrix
3 次查看(过去 30 天)
显示 更早的评论
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 个评论
Adam
2019-4-9
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?
采纳的回答
James Tursa
2019-4-9
编辑:James Tursa
2019-4-9
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 个)
Jon
2019-4-9
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))
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Logical 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!