我有两个数据集超过一百万点。我想要做的是创建一个循环,查看每个位置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数据。
答案 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,:);