如何在matlab中查找一条直线的边缘点?
问题描述:
我已经绘制在Matlab一条线,我想找出所在的坐标我的线穿过边缘:如何在matlab中查找一条直线的边缘点?
任何建议或意见? =)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);
答
我想我解决了它自己=)如果有人碰到这个问题,以下是我修改了代码:
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图片=)
答
- 查找该线的方程,即:
y=a*x+b
- 使用下部/上部求解对于x y-极限,如果得到的x在x极限内,则这是边缘点(s)。
- 使用左/右x极限求解y,如果结果y在y极限内,则这是边缘点(s)。
- 完成
所以基本上限制范围内所得到的点是在TE以下画面中的绿色的点,这些限制以外所得点是红色的。
谢谢你的回答=)在一般情况下呢?例如,如果生成的x不在x限制内? =) – jjepsuomi 2013-04-09 06:43:07
基本上我的anwser告诉你找到你的交点是与边线相交的。因此,当结果x超出x极限时,这意味着您的线与上/下边缘的交点位于框外,因此它不是边缘点。 – 2013-04-09 06:57:43
再次感谢您=)好的,但是我怎么能找到我在图像中圈出的坐标? =)在这种情况下,这些值在框外,但我有兴趣知道它们在图像边界上的位置=)希望我不清楚; D – jjepsuomi 2013-04-09 07:05:29