How can I extract coordinates (x,y,z) from a matrix that match coordinates in another matrix

12 views (last 30 days)
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?

Accepted Answer

Nicola Bombace
Nicola Bombace on 12 Oct 2018
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 Comments

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!