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 commentaires

Geoff Hayes
Geoff Hayes le 10 Mar 2019
Ole - should the condition for the if statement correspond to A(k,j) or a(k,j)?
Ole
Ole le 10 Mar 2019
Thanks it is actually the X(i,j), s<X(k,j).

Connectez-vous pour commenter.

 Réponse acceptée

madhan ravi
madhan ravi le 10 Mar 2019

1 vote

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)

Plus de réponses (0)

Catégories

En savoir plus sur Loops and Conditional Statements dans Centre d'aide et File Exchange

Produits

Version

R2016b

Community Treasure Hunt

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

Start Hunting!

Translated by