Hello,
i have the following for loop and i am trying to find a way to avoid the loops and reduce the time. is it possible to calculate A and B without using a for loop ?
for i = 1:m
for j = 1:m
A(i,j) = A(i,j)/(sqrt(Dn(i,i)*Dn(j,j)));
end
end
for i = 1:m
for j=1:n
B(i,j) = B(i,j)/(sqrt(Dn(i,i)*Dn(j+m,j+m)));
end
end
A is an mxm matrix
B is an mxn matrix
and Dn is an NxN diagonal matrix
with N = 247 , n = N-m = 217 and m =30.

 採用された回答

Walter Roberson
Walter Roberson 2019 年 5 月 6 日

0 投票

sdnd = sqrt(diag(Dn)); %gives a column vector
A = A ./ (sdnd(1:m) .* sdnd(1:m).');
B = B ./ (sdnd(1:m) .* sdnd(m+1:end).');
Requires R2016b or later.

1 件のコメント

Pamela AL ALam
Pamela AL ALam 2019 年 5 月 6 日
Thank you, it works

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

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File Exchange で Loops and Conditional Statements についてさらに検索

製品

リリース

R2018a

Community Treasure Hunt

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

Start Hunting!

Translated by