how to vectorized a nested for loop?

4 ビュー (過去 30 日間)
mohammed
mohammed 2014 年 2 月 13 日
コメント済み: Jung Soo Park 2018 年 2 月 21 日
i have two for loop and i want to vectorized it . i try a lot to do it but i cannot do it. this is the simple version is let
Mat = zeros(10)
for i = 1:10
for j = 1:10
Mat(i,j) = exp((i.^5) + j.^2);
end
end
Thanks.......

回答 (1 件)

Jan Orwat
Jan Orwat 2014 年 2 月 13 日
編集済み: Jan Orwat 2014 年 2 月 14 日
Hello Mohammed, there are many ways to vectorize your loops. Check out those examples:
1.
[r,c]=meshgrid(1:10,1:10);
Mat=exp(c.^5+r.^2);
check function meshgrid in help to how it works (type doc meshgrid in commmand window)
2.
Mat=bsxfun(@(A,B)exp(A.^5+B.^2),(1:10)',1:10);
check bsxfun and function_handle
  • Also, please consider the fact that in your example, and in proposed vectorizations in matrix Mat columns from 4 to 10 have values equal to infinity due to maximum capacity of data precision.
  4 件のコメント
Jan Orwat
Jan Orwat 2014 年 2 月 14 日
Thanks Mohammed, I've updated the answer. Now it is correct.
Jung Soo Park
Jung Soo Park 2018 年 2 月 21 日
there are two minor errors on mohammed's reply dated 14feb2014. a=zeros(10,10) and isequal(a,Mat1)

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

Community Treasure Hunt

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

Start Hunting!

Translated by