Conditional 'for loop', simpler ?

1 回表示 (過去 30 日間)
Ole
Ole 2019 年 3 月 10 日
コメント済み: Ole 2019 年 3 月 10 日
Is it possible make a for double loop simpler.
x=linspace(-2,2,100); s=1/2;
[X,Y]=meshgrid(x,x);
A = X.^2; B = Y;
for k=1:size(x,1)
for j=1:size(y,2)
if s<X(k,j)
L(k,j)=A(k,j).*sin(s);
M(k,j)=B(k,j).*sin(s);
else %(s>X(k,j))
L(k,j)=A(k,j).*cos(s/2);
M(k,j)=B(k,j).*cos(s/2);
end
end
end
  2 件のコメント
Geoff Hayes
Geoff Hayes 2019 年 3 月 10 日
Ole - should the condition for the if statement correspond to A(k,j) or a(k,j)?
Ole
Ole 2019 年 3 月 10 日
Thanks it is actually the X(i,j), s<X(k,j).

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

採用された回答

madhan ravi
madhan ravi 2019 年 3 月 10 日
No loops needed:
L=zeros(size(A));
M=zeros(size(B));
L(s<A)=A(s<A).*sin(s);
M(s<A)=B(s<A).*sin(s)
L(s>A)=A(s>A).*cos(s/2);
M(s>A)=B(s>A).*cos(s/2)
  1 件のコメント
Ole
Ole 2019 年 3 月 10 日
Thank you!

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

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeLoops and Conditional Statements についてさらに検索

製品


リリース

R2016b

Community Treasure Hunt

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

Start Hunting!

Translated by