2013-04-09 118 views
0

我已经绘制在Matlab一条线,我想找出所在的坐标我的线穿过边缘:如何在matlab中查找一条直线的边缘点?

enter image description here

任何建议或意见? =)My功能XY-限制是-1到1。这是我的代码到目前为止:

yp = -1 + (1-(-1)).*rand(1,2); 
xp = -1 + (1-(-1)).*rand(1,2); 
a = (yp(2)-yp(1))/(xp(2)-xp(1)); 
b = yp(1)-a*xp(1); 
xlim([-1 1]) 
ylim([-1 1]) 
xlims = xlim(gca); 
ylims = ylim(gca); 
y = xlims*a+b; 
line(xlims, y); 

回答

3

我想我解决了它自己=)如果有人碰到这个问题,以下是我修改了代码:

yp = -1 + (1-(-1)).*rand(1,2); 
xp = -1 + (1-(-1)).*rand(1,2); 
a = (yp(2)-yp(1))/(xp(2)-xp(1)); 
b = yp(1)-a*xp(1); 
xlim([-1 1]) 
ylim([-1 1]) 
x = xlim(gca); 
y = x*a+b; 

for i = 1:numel(y) 
    if y(i) < -1 
     y(i) = -1; 
     x(i) = (-b-1)/a; 
    elseif y(i) > 1 
     y(i) = 1; 
     x(i) = (1-b)/a; 
    end 
end 

line(x, y); 

这似乎为我工作,我可以解决“绿色圆点“在Gunthers图片=)

3
  1. 查找该线的方程,即:y=a*x+b
  2. 使用下部/上部求解对于x y-极限,如果得到的x在x极限内,则这是边缘点(s)。
  3. 使用左/右x极限求解y,如果结果y在y极限内,则这是边缘点(s)。
  4. 完成

所以基本上限制范围内所得到的点是在TE以下画面中的绿色的点,这些限制以外所得点是红色的。

enter image description here

+0

谢谢你的回答=)在一般情况下呢?例如,如果生成的x不在x限制内? =) – jjepsuomi 2013-04-09 06:43:07

+1

基本上我的anwser告诉你找到你的交点是与边线相交的。因此,当结果x超出x极限时,这意味着您的线与上/下边缘的交点位于框外,因此它不是边缘点。 – 2013-04-09 06:57:43

+0

再次感谢您=)好的,但是我怎么能找到我在图像中圈出的坐标? =)在这种情况下,这些值在框外,但我有兴趣知道它们在图像边界上的位置=)希望我不清楚; D – jjepsuomi 2013-04-09 07:05:29