How to do simple if statement without using if
Afficher commentaires plus anciens
Another silly question, this is a small part of a bigger overall homework problem I've been having, but if I have a situation where I want to say:
if (x>y)
~~~~
end
is there a way of doing that without using an if statement? Appreciate any help!
1 commentaire
Mischa Kim
le 3 Nov 2016
Depends. What is between the if-end?
Réponses (3)
Star Strider
le 3 Nov 2016
I have no idea what you want to do, but something like this could work:
z = (x.*y) .* (x>y)
It uses implicit logical indexing, so for x<=y, ‘z’ is 0 since (x>y) is 0 (false), and for x>y, ‘z’ is x.*y, since x>y is 1 (true).
Experiment with it with your code to get the result you want.
2 commentaires
wakakami
le 3 Nov 2016
Star Strider
le 4 Nov 2016
My pleasure!
Not impossible at all:
z = x.*(x<y) + (x-y).*(x>y);
This leaves undefined x==y, that would be zero.
You can also create an anonymous function version:
z = @(x,y) x.*(x<y) + (x-y).*(x>y);
to use anywhere in your script, just as you would any other function.
Image Analyst
le 3 Nov 2016
Use while:
temp = x
while (x>y)
~~~~
x = y-1; % Force exit of while loop
end
% Restore x to original value
x = temp;
But why not simply use "if"? What's wrong with if???
yahya naja
le 7 Avr 2020
0 votes
can anyone help i can do it with if but how to do it without it
3 commentaires
Image Analyst
le 7 Avr 2020
Modifié(e) : Image Analyst
le 7 Avr 2020
.png)
I don't know how they get $11.75. I get $11.56. Here is how you'd do it:
w = 2.25
d = 3.5
distanceBeyond1 = ceil(d - 1) % Remaining distance
theFare = round(5 + 2 * distanceBeyond1 + w * 0.25, 2)
You can see that you have $5 for the first 1 km, leaving 2.5 km left. But you count any part of a km as a full km, so the remaining distance gets rounded up to 3 with ceil(). At $2 per km, that is $2*3 = $6 for the distance between 1 and 3.5 km, so now we have $11 so far. Then the wait cost is 2.25 * $0.25 = $0.5625. Adding up you get $5 + $6 + $0.56 = $11.56.
yahya naja
le 8 Avr 2020
thanks anyway i will use your logic and try to modify it
Image Analyst
le 9 Avr 2020
If you figure out how they got $11.75 instead of $11.56, let us know because I'm just not seeing it. Maybe they did something they didn't state, like the price gets rounded up to the nearest $0.25 or something.
Catégories
En savoir plus sur Matrix Indexing dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!