How can I extract coordinates (x,y,z) from a matrix that match coordinates in another matrix
12 views (last 30 days)
Show older comments
merialu
on 12 Oct 2018
Commented: Nicola Bombace
on 14 Oct 2018
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
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
More Answers (0)
See Also
Categories
Find more on NaNs in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!