Matlab检查用户输入是否是我的情节中的一个点

时间:2016-10-12 14:49:50

标签: matlab if-statement plot graph conditional

我一直试图弄清楚如何在几个小时内完成这项工作。我有两个方程式以(x,y)格式绘制

x = v*cosd(theta)*t;
y = -(g*t.^2)/2 + v*sind(theta)*t;
plot(x,y)

变量v,theta,xanimal,yanimal在程序运行后由用户输入填充。 xanimal和yanimal基本上是单点的位置,而v和theta是进入上面创建轨迹的方程式的变量。 我正在寻找的是一些条件语句,用于确定点(xanimal,yanimal)是在图上还是在图(x,y)的0.5之内。 由于通过用户输入填充等式的值,因此绘图(x,y)不断变化。

我尝试过不同的事情。

 One Attempt

 for i=1:max(x)
 if xanimal == x(i) && yanimal == y
 disp('Success')
 end
 end

此方法也无效

Second Attempt
Xmax_animal = xanimal +.5;
Xmin_animal = x-.5;

Ymax_animal = y+.5
Ymin_animal = y-.5
Y_animal = linspace(max(y),min(y),1)

if(Y_animal>max1)
disp('food fight')
else

a = find(y >= Y_animal);
b = x(a);
d = b(1);
c1 = b(end); 

if (Xmax_animal >= d) && (d >= Xmin_animal)
set(handles.edit5, 'String', 'Success')

提前致谢!

1 个答案:

答案 0 :(得分:0)

您需要一个距离函数,它使用两个坐标而不是分别使用每个坐标。以下应该有效:

function d = dist(x , y, xpoint, ypoint)
    d = sqrt( (x - xpoint).^2 + (y - ypoint).^2 );
end

你可以调用这个点给它你的x和y向量以及你的xanimal和yanimal点来产生一个距离数组。然后使用

if sum(d < 0.5) > 0 
    disp('Close enough!');
else 
    disp('too far away');
end