0

假设

A=[32512199.30 5401000.29  347.33  
32512199.69 5401000.45  347.39    
32512199.67 5401001.32  353.58    
32512199.96 5401001.50  346.99    
32512196.71 5401001.69  346.62    ]

 B=[32512199.30 5401000.29  347.33  
    32512199.69 5401000.45  347.39     
    32512199.67 5401001.32  347.00     
    32512198.85 5401000.91  347.25     
    32512196.71 5401001.69  346.87     ]

我想使用 ismember 提取具有相同 X 和 Y 以及不同 Z 的行。X 是第一列,Y 是第二列,Z 是第三列。在 A 和 BI 中想要从 A 中提取32512199.67 5401001.32 353.5832512196.71 5401001.69 346.62从 B 32512199.67 5401001.32 347.00中提取,32512196.71 5401001.69 346.87 我该怎么做?

4

2 回答 2

1
inds = find(~ismember(A, B, 'rows'));
new_inds = find(ismember(A(inds, 1:2), B(:, 1:2), 'rows'));
inds(new_inds)
于 2013-10-27T09:31:57.903 回答
0

ismember首先使用and找到所需匹配的行索引findA/B然后从到提取这些行XA/XB

row_idx = find ( ismember( ismember(A,B), [1 1 0], 'rows') )

XA = A(row_idx,:)
XB = B(row_idx,:)

输出:

row_idx =

   3
   5

XA =

   3.2512e+07   5.4010e+06   3.5358e+02
   3.2512e+07   5.4010e+06   3.4662e+02

XB =

   3.2512e+07   5.4010e+06   3.4700e+02
   3.2512e+07   5.4010e+06   3.4687e+02
于 2013-10-27T09:45:07.670 回答