MATLAB Matlab: If/Elseif 2 conditions.

  • Thread starter Thread starter Beer-monster
  • Start date Start date
  • Tags Tags
    Conditions Matlab
AI Thread Summary
In MATLAB, to execute the same series of calculations under multiple conditions, use the OR operator (|) instead of separate if and elseif statements. The user is trying to run code when either dE is less than or equal to zero or r is less than or equal to w. Instead of duplicating code for each condition, a single if statement can be structured like this: if (dE <= 0 | r <= w), followed by the desired program statements. This approach avoids redundancy and leverages MATLAB's capability to handle disjunctive conditions efficiently. It's also advised to use brackets for clarity in complex logical expressions.
Beer-monster
Messages
285
Reaction score
0
Hi

I'm new to MATLAB and I'm trying to write a code that executes the same process under two separate conditions>

condition 1: that scalar value dE is less than or equal to zero.
condition 2: that scalar value r is less than or equal to scalar value w.

I'd like to same series of calculations to be executed if either of these conditions are true (or both) like an OR statement.

I've tried to accomplish this using an if and elseif combination.

r=0
w=1
dE=0
L1=ones(N)

for i=1:t

if (dE<=0)
elseif (r<=w)

<program statements>

else

<final condition>
end

However, it does not seem to be working. Most examples of the elseif statement I've seen online has two separate series of commands for the if and elseif condition

e.g

if expression1
<program statements1>
elseif expression2
<program statements2>
end

Is it possible that my code will not work unless I write the if/elseif statements separate (i.e. copy and paste my current process)? If so, is there another method I could use or do I need to repeat my statements.

Thanks
 
Physics news on Phys.org
MATLAB also allows you to do disjunctive conditions. What're disjunctive conditions? That's fancy-talk for OR-ing two things (in this case, using the OR operator, the pipe |). If you're familiar with C, that probably looks pretty familiar--in fact, MATLAB uses the same operators, both logical and bit-wise.

Assume you have two numbers A and B. Let's say you want some code to execute if A is less than 5 or B is >10. To do that, you'd do the following:

Code:
if (A < 5 | B > 10)
     A * B
end

For completeness sake, it's usually best to put brackets around logical conditions in the order that you wish for them to be evaluated (say, when you have three or more operations or conditions--it's not always left to right).

Unfortunately, the only way an elseif statement would work is if you pasted the exact same code under the if statement as you do under the else-if statement. In short, use the power of logical operators:
http://www.mathworks.com/help/techdoc/matlab_prog/f2-97022.html#brftcpu-1
 
Last edited by a moderator:
Great. That helped a lot. Thanks.
 
Back
Top