Multiply each row of a matrix by a matrix

11 ビュー (過去 30 日間)
Sidafa
Sidafa 2017 年 1 月 20 日
コメント済み: Matt J 2017 年 1 月 20 日
Say I have the following matrix
B = [1 2 3;4 5 6;7 8 9;10 11 12]
and another matrix
A = [a b c;d e f;g h i]
How do I multiply each row of matrix B by the matrix A (without using a for loop), i.e
for i = 1:4
c(i) = B(i,:)*A*B(i,:)'
end
many thanks in advance.

回答 (1 件)

James Tursa
James Tursa 2017 年 1 月 20 日
編集済み: James Tursa 2017 年 1 月 20 日
c = sum(bsxfun(@times,B',A*B'));
or another way, but does a lot of extra work for the off-diagonals that are discarded:
c = diag(B*A*B');
  1 件のコメント
Matt J
Matt J 2017 年 1 月 20 日
No need for bsxfun, I don't think
c=sum((B*A.').*B,2);

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeMatrix Indexing についてさらに検索

製品

Community Treasure Hunt

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

Start Hunting!

Translated by