Help about function with if statement
8 次查看(过去 30 天)
显示 更早的评论
I have problem with creating function. I don´t know how to use command function properly. Can you guys tell me where I was wrong it will be very helpful
function [y]=task1(x)
if x>=8
y = 14*(5*x)^(1/2)+9;
end
if (-1<=x<8)
y=9*x +9;
end
if (x<-1) y=9;
end
1 个评论
Jan
2016-12-18
Why do you assume, that something is wrong? Which problem do you observe? Do you get an error message?
回答(2 个)
laaj
2016-12-18
function output=task1(x)
if x>=8
y = 14*(5*x)^(1/2)+9;
end
if (-1<=x<8)
y=9*x +9;
end
if (x<-1)
y=9;
end
output=[y];
I don't know much but I just hope it will solve the problem.
0 个评论
Jan
2016-12-18
编辑:Jan
2016-12-18
"if (-1<=x<8)" does most likely not do, what you expect. Matlab processes this expression from left to right: "-1<=x" replies TRUE or FALSE depending on the value of x. In the next step you have "TRUE<8" or "FALSE<8". While TRUE is converted to 1, FALSE is a 0, and both values are smaller than 8. You need two comparisons: "-1 <= x" and "x < 8":
function y = task1(x)
if x >= 8
y = 14 * (5 * x)^(1 / 2) + 9;
elseif -1 <= x && x < 8
y = 9 * x + 9;
elseif x < -1
y = 9;
end
Now you can simplify this: If you have excluded x>=8 already, you do not have to check for x<8 anymore:
function y = task1(x)
if x >= 8
y = 14 * sqrt(5 * x) + 9; % SQRT is cheaper than ^0.5
elseif -1 <= x
y = 9 * x + 9;
else
y = 9;
end
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Programming Utilities 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!