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!