Removing far points between vectors
3 次查看(过去 30 天)
显示 更早的评论
Hello, i have 2 very large vectors which represent points in a 3d image, im interested in removing all points from the first vector that are farther then 'distance' from the second vector. for example: let A=(1 1 1, 10 10 10, 20 20 20) and b be (1 1 1, 2 2 2, 3 3 3), and distance be 5, only point 1 1 1 in a is closer then 5 to a certain point in b therefore the result should be C=(1 1 1)
2 个评论
采纳的回答
KL
2017-5-15
编辑:KL
2017-5-15
A=[1 1 1; 10 10 10; 20 20 20]
B = [1 1 1; 2 2 2; 3 3 3]
C = A(sqrt(sum((A-B).^2,2))<=5,:) %edited
3 个评论
KL
2017-5-15
编辑:KL
2017-5-15
As Jan says, the above works only for the matrices of same size. If you want to compare matrices of different sizes and with all the elements in matrix B, then use the following one.
Arep = kron(A,ones(size(B,1),1));
Brep = repmat(B,size(A,1),1);
dAB = sqrt(sum((Arep-Brep).^2,2));
d = mean(reshape(dAB,fliplr(size(A))))
C = A(d<=5,:)
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Logical 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!