How to construct this matrix without using two for loops?

2 ビュー (過去 30 日間)
Mohit Kumar
Mohit Kumar 2021 年 5 月 13 日
コメント済み: VBBV 2021 年 5 月 13 日
Hi, I'm trying to construct a matrix in the following manner:
sz=10;
V=rand(sz,sz);
X=rand(sz,sz);
for iter1=1:sz
for iter2=1:sz
A(iter1,iter2) = sum((V(:,iter1)*V(:,iter2)').*X,[1 2]);
end
end
Is there a way to do this without for-loops? I'm sure there must be a way that I haven't been able to think of!
  2 件のコメント
Mohit Kumar
Mohit Kumar 2021 年 5 月 13 日
My bad, i mean iter1 and iter2. Edited the question. Thanks.

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

回答 (2 件)

Mohit Kumar
Mohit Kumar 2021 年 5 月 13 日
I was able to figure out the answer to this. The formulation can be written as
A = V' * X * V;

VBBV
VBBV 2021 年 5 月 13 日
%if true
A = V'.* X.*V;
  1 件のコメント
VBBV
VBBV 2021 年 5 月 13 日
Whichever order you chose to multiply it works as there is no conflict in dimensions or sizes of matrices

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

製品

Community Treasure Hunt

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

Start Hunting!

Translated by