初学者循环写入:计算数组中两点之间的角度,过滤数据(matlab)

时间:2015-05-19 18:43:07

标签: arrays matlab loops

我有两个数据集超过一百万点。我想要做的是创建一个循环,查看每个位置x1,x2,y1,y2并计算这两个点之间的角度。从那里我想删除点,如果它们之间的角度(a)是-0.5&gt; a&lt; 0.5(如果角度-0.5> a <0.5,则删除相应的x2,y2,z2,将剩余点保存为文本文件)。

我知道我可以使用atan2((y2-y1,x2-x1)),但我无法弄清楚如何为这个数组做一个循环。我还需要为第二个数据集(x2,y2)中的每个点保留z数据。

1 个答案:

答案 0 :(得分:2)

首先,两个点不能形成角度,因此,我将假设您指的是从P1(x1,y1)到P2(x2,y2)的矢量角度。考虑到这一点,你可以这样做:

N = 100;
threshold = 0.5;

P0 = zeros(N,2);
P1 = [cos( ((1:N)/N)*2*pi )' sin( ((1:N)/N)*2*pi )'];

ang = atan2(P1(:,2) - P0(:,2), P1(:,1) - P0(:,1) );
sel = abs(ang) < threshold; 

newP0 = P0(~sel,:);
newP1 = P1(~sel,:);