MATLAB Answers

Conditional 'for loop', simpler ?

23 ビュー (過去 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).

サインイン to comment.

採用された回答

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!

サインイン to comment.

その他の回答 (0 件)

サインイン してこの質問に回答します。

製品


リリース

R2016b

Translated by