线点检查

时间:2012-07-16 10:35:42

标签: matlab line

plot([x5],[y5],'-',xout_1(1),yout_1(1),'*',xout_1(2),yout_1(2),'*')

x5 =[125  -263]

y5 =[165  -375]

xout_1 =[135.5049    -127.0045]

yout_1 =[  179.6202  -185.7279]

这是我的计划的一个场景 我如何从线上丢弃点(135.5049,179.6202)?每次模拟都会改变这些值 任何人都可以告诉我如何删除这一点。

由于

1 个答案:

答案 0 :(得分:1)

如果要删除检查点是否在线上,请执行以下操作:

slope = (y5(2) - y5(1)) / (x5(2) - x5(1));  %# Slope of main line
thr = 1e-6;                                 %# Threshold to check points
idx = (abs((yout_1 - y5(1)) ./ (xout_1  - x5(1)) - slope) < thr) & ... 
   (xout_1 > min(x5) & xout_1 < max(x5));

现在idx是一个逻辑向量,其中“1”表示该点在线上,否则为“0”。要绘制这些点,请使用逻辑索引:

plot(x5, y5, '-', xout_1(idx), yout_1(idx), '*')

这适用于任意数量的点,您可以根据需要为xout_1yout_1添加任意多个点,并且它只会绘制掉落的点数在线。

P.S
没有必要将x5y5括在括号中,它们已经是一个向量。