Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Matlab: If/Elseif 2 conditions.

  1. Nov 2, 2011 #1

    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.


    for i=1:t

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

    <program statements>


    <final condition>

    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


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

    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.

  2. jcsd
  3. Nov 5, 2011 #2


    User Avatar
    Science Advisor

    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 (Text):

    if (A < 5 | B > 10)
         A * B
    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 [Broken]
    Last edited by a moderator: May 5, 2017
  4. Nov 5, 2011 #3
    Great. That helped a lot. Thanks.
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook