Effacer les filtres
Effacer les filtres

How to have 'if statements' when defining 'constants'?

7 vues (au cours des 30 derniers jours)
A
A le 3 Mai 2015
Commenté : Star Strider le 3 Mai 2015
Hi guys,
I want to use 'if statements' to set certain constants in my surface. I have created this example of what I am trying to do. I want 'SomeConstant' to be a certain thing based on what the 'y' value is?
x = [0:100];
y = [0:100];
SomeConstant = 1;
if y <20
SomeConstant = 5;
else if y>20
SomeConstant = 10;
Test1 = @(x,y)(x+y)+SomeConstant;
Test2 = @(x,y)(x.^2+y)+SomeConstant;
[X1,Y1] = meshgrid(x,y);
Z1 = Test1(X1,Y1);
Z2 = Test2(X1,Y1);
s1 = surf(X1,Y1,Z1,'LineStyle','none');
hold on
s2 = surf(X1,Y1,Z2,'LineStyle','none');
Thank you

Réponse acceptée

Star Strider
Star Strider le 3 Mai 2015
I would create ‘SomeConstant’ as an anonymous function:
x = [0:100];
y = [0:100];
SomeConstant = @(y) [1*(y == 20) + 5*(y < 20) + 10*(y > 20)];
Test1 = @(x,y)(x+y)+SomeConstant(y);
Test2 = @(x,y)(x.^2+y)+SomeConstant(y);
[X1,Y1] = meshgrid(x,y);
Z1 = Test1(X1,Y1);
Z2 = Test2(X1,Y1);
s1 = surf(X1,Y1,Z1,'LineStyle','none');
hold on
s2 = surf(X1,Y1,Z2,'LineStyle','none');
You defined ‘SomeConstant’ to be 1, and then defined it as being 5 for y<20 and 10 for y>20. I created the anonymous function version with those conditions, adding the condition that it was 1 at y==20.
This works, but you have to determine if it produces the result you want.
  4 commentaires
A
A le 3 Mai 2015
This all works. Thank you again! I will accept this answer!
Star Strider
Star Strider le 3 Mai 2015
My pleasure! Thank you!

Connectez-vous pour commenter.

Plus de réponses (0)

Community Treasure Hunt

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

Start Hunting!

Translated by