如何在matlab中找到一条直线的边缘点?

时间:2013-04-09 06:36:26

标签: matlab

我在Matlab中绘制了一条线,我想找出我的线穿过边缘的坐标:

enter image description here

有任何建议或意见吗? =)我的函数xy-limits是-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 );

2 个答案:

答案 0 :(得分:3)

  1. 找到该行的等式,即:y=a*x+b
  2. 使用下限/上限y限制求解x,如果得到的x在x限制范围内,则这是/是边缘点。
  3. 使用左/右x限制求解y,如果得到的y在y限制范围内,则这是/是边缘点。
  4. 完成
  5. 因此,基本上限制范围内的结果点是下图中的绿点,超出限值的结果点是红点。

    enter image description here

答案 1 :(得分: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图片中的“绿点”=)