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
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 CenterFile Exchange 中查找有关 Line Plots 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by