How can I extract coordinates (x,y,z) from a matrix that match coordinates in another matrix
조회 수: 13 (최근 30일)
이전 댓글 표시
Hi
I have a matrix (A) containing columns for coordinates (x,y,z) and a columns with simulated values (v) for each point. I also have a matrix (B) containing coordinates (x,y,z)for a reference data set which is much smaller.
I would like to remove all rows (points) in matrix A which don't have the same coordinates as in matrix B so that i have a matrix containing x,y,z,v for each point that is included in matrix B.
I also like to state that i have tried to use ismember and intersect for this but it does not give me the same amount of points that is given in matrix B.
Any easy way to solve this?
채택된 답변
Nicola Bombace
2018년 10월 12일
I think that the problem might be that your number are doubles. I suggest an approach based on distance.
You could first use the function pdist2(A,B) which will compute the distance between every point of A and B in a matrix. Then filter the results.
A = [1, 1 , 1;
2, 2 , 2;
3, 3 , 3;
4, 4, 4;
5, 5, 5];
B = [3 , 3, 3;
5, 5, 5];
tol = eps;
dist = pdist2(A,B);
samePoints = dist < eps;
rowIndexSamePoint = find(logical(sum(samePoints,2)) > 0);
AFilt = A(rowIndexSamePoint,:); % A and B are the same matrix
댓글 수: 4
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Line Plots에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!