how to filter points which are on a straight line
6 ビュー (過去 30 日間)
古いコメントを表示
hi, im looking for a function that will allow me to filter all points that are on a straight line and keep the points that represent that lines ends. for example if im given [1 1; 2 2; 3 3; 4 5; 5 5; 6 6; 7 7] than the output should be [1 1;3 3;4 5;5 5; 7 7] it filters 2 2 since its on the line between 1 1 and 3 3 and also filters 6 6 because its on the line between 5 5 and 7 7 can anyone help? thanks
0 件のコメント
回答 (2 件)
Image Analyst
2013 年 3 月 7 日
Depending on what you want to do and what your data look like, you may need to use RANSAC: http://en.wikipedia.org/wiki/Ransac It can find lines in a mess of points, like this:
0 件のコメント
Teja Muppirala
2013 年 3 月 7 日
F = [1 1; 2 2; 3 3; 4 5; 5 5; 6 6; 7 7];
dydx = diff(F(:,2))./diff(F(:,1));
F(1 + find(diff(dydx)==0) ,:) = []
1 件のコメント
Teja Muppirala
2013 年 3 月 7 日
This assumes they are EXACTLY on a straight line. But floating-point math can sometimes mess that up, so you might want to do
abs(diff(dydx)) < some small tolerance
instead of just
diff(dydx) == 0
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!