Using For Loop to get different outcomes

1 view (last 30 days)
Hi all!
I'm trying to write a code where I can give two different properties in the graph given the value of psi.
For example, I have a function where I specify psi_value:
isosurface_STO_orbital(atom_pos,STO_parameters,coeff,psi_value)
I would like for it to do something like this:
for psi_value= .05 or .15 or .25 or .35;
s_plot= .8;
for psi_value_j=.1 or 2 or .3 or .4
s_plot=.2;
What would be a good way to get this outcome?
Thanks!
  1 Comment
Melissa Hopkins
Melissa Hopkins on 3 Oct 2019
psi_value_j was meant to be just psi_value, sorry for the confusion

Sign in to comment.

Answers (1)

Guillaume
Guillaume on 3 Oct 2019
if ismember(psi_value, [0.05, 0.15, 0.25, 0.35]) %maybe use ismembertol
s_plot = 0.8;
else
s_plot = 0.2;
end
Note that your if your psi_value is the result of a calculation it may never be exactly equal to 0.05 (or 0.15, or...) in which case use ismembertol instead of ismember.
  1 Comment
Melissa Hopkins
Melissa Hopkins on 3 Oct 2019
Awesome, thank you! Now that I have that fixed, I'm running into another issue if anyone sees the problem. I get an error code that face_alpha is undefined in the patch. Maybe I was going about this the wrong way with the loop? I'm having a hard time understanding
if ismember(psi_value,[.05 .15 .25 .35])
face_value=.8;
else
face_value=.2;
end
end
% draw positive isosurface
psi_surface=isosurface(X_grid,Y_grid,Z_grid,psi_grid,psi_value);
patch(psi_surface,'FaceColor',[0 90 255]/255,'FaceAlpha',face_value,'EdgeColor','none');

Sign in to comment.

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Tags

Products

Community Treasure Hunt

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

Start Hunting!