Code covered by the BSD License  

Highlights from
if-then-else shortcut

Be the first to rate this file! 3 Downloads (last 30 days) File Size: 1.5 KB File ID: #28587

if-then-else shortcut

by Yanai

 

30 Aug 2010 (Updated 31 Aug 2010)

The function is a shortcut for simple if conditions, to reduce redundant code

| Watch this File

File Information
Description

shortcut for simple if conditions.
The function works similar to Excel format.
First argument is the condition, second is what to do if true, third is what to do if false.

example 1:
A = ifelse(x>thr, 5, 3)
will execute:
if x>thr
A = 5
else
A = 3
end

example 2:
A = ifelse(im>thr, im*2, im/2)
will execute:
A = im*2 where im>thr
A = im/2 where im<=thr

example 3:
ifelse(x~=0, 'y=1/x;', 'disp ''x is zero''')
will execute:
if x~=0
y = 1/x;
else
disp 'x is zero'
end

MATLAB release MATLAB 7.7 (R2008b)
Tags for This File  
Everyone's Tags
Tags I've Applied
Add New Tags Please login to tag files.
Comments and Ratings (2)
31 Aug 2010 Oleg Komarov

I bring to the attention this behaviour:

ifelse([10,1] > 2,1,0)
ans =
     1 0

ifelse([10,1] > 2,'a = 1','b = 0')
b =
     0

As you can see its behaviour depends not on the first input (and on its features, a double row vector) but rather on the second and third argument.
This is totally unexpected and IMO unwanted.

This kind of problem is evident from the wrong "example 1". If x is not a scalar then the if-else construct doesn't describe what the function does.

31 Aug 2010 Yanai

Thanks Oleg for you comment.
Regarding the 2nd example you wrote, I agree I should have returned an error, since there is no meaning in using non-scalars as condition, and an expression as result.

In the 1st example, the behavior is required IMO, but maybe the documentation is lacking. If x is non-scalar there are two possible uses:
1) as I wrote in my example2 (all inputs are non-scalars)
2) result is 5 where x>thr, and 3 elsewhere

 

Please login to add a comment or rating.
Updates
31 Aug 2010

added another option to function (example 2 in description).

Tag Activity for this File
Tag Applied By Date/Time
if Yanai 30 Aug 2010 13:36:05
then Yanai 30 Aug 2010 13:36:05
else Yanai 30 Aug 2010 13:36:05
code Yanai 30 Aug 2010 13:36:05

Contact us at files@mathworks.com