problem with if statement
4 次查看(过去 30 天)
显示 更早的评论
Hi Guys,
This is a very basic question. I want to figure out which quadrant a point lies in from the value I get from atan2. I dont know if there is a simpler way but I wrote a code containing a series of if statements and it isnt executing right. Can anyone tell me what is wrong in it. Your help is greatly appreciated.
if 0<ang<1.5708
quad=1;
end
if 1.5708<ang<3.1416
quad=2;
end
if -1.5708<ang<0
quad=3;
end
if -3.1416<ang<-1.5708
quad=4;
end
Thanks, NS
1 个评论
sco1
2011-11-4
I'll look at it in a second, but I would suggest using pi() instead of discrete numbers in order to avoid errors where your point lies on one of the axes.
采纳的回答
Wayne King
2011-11-4
if (0<ang && ang <1.5708)
quad=1;
elseif (1.5708<ang && ang<3.1416)
quad=2;
elseif (-1.5708<ang && ang<0)
quad=3;
else
quad=4;
end
You can't do 0<ang<pi/2
更多回答(2 个)
Fangjun Jiang
2011-11-4
What is wrong is that "0<ang<1.5708" is not a valid statement according MATLAB M-language syntax. You will need to use
and(0<ang, ang<1.5708)
Or
0<ang && ang<1.5708
sco1
2011-11-4
I don't think MATLAB will handle the logic statements when put that way, try using an and statement instead: I would also suggest using elseif just because it makes things look neater.
For example:
if ang > a && ang < b
quad = x
elseif ang > b && ang < c
quad = y
etc.
edit: I'm a slow typer!
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Annotations 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!