Most efficient way to do matrix operation v'*M*v
조회 수: 2 (최근 30일)
이전 댓글 표시
Hi all,
i have a problem where I need to do the following operation:
R is a square matrix
V is a nonsquare matrix
The operation is to multiply 1 - V(i, :)*inv( R )*V(i, :)', and store the result for each i.
Right now I'm doing it using a for loop:
Rinv = inv( R );
for i=1:n
val(i) = 1 - Z(i, :)*Rinv*Z(i, :)';
end
My problem requires performing this calculation a few million times and I'm trying to optimize it as much as possible. Is there a way to get rid of the for loop? I could do V*inv( R )*V', but that performs a lot more inner products than I actually need.
Thanks for the help.
댓글 수: 0
채택된 답변
Roger Stafford
2014년 9월 18일
Assuming the values in V are real,
val = 1-sum((V/R).*V,2);
If V has complex-valued elements, change that to
val = 1-sum((V/R).*conj(V),2);
Note that V must have the same number of columns as R has rows and columns.
댓글 수: 0
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Operating on Diagonal Matrices에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!