假设
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和B中,我希望从B 32512199.67 5401001.32 353.58
和32512196.71 5401001.69 346.62
中的A 32512199.67 5401001.32 347.00
和32512196.71 5401001.69 346.87
OR中提取
我该怎么做?
答案 0 :(得分:1)
inds = find(~ismember(A, B, 'rows'));
new_inds = find(ismember(A(inds, 1:2), B(:, 1:2), 'rows'));
inds(new_inds)
答案 1 :(得分:0)
首先使用ismember
和find
找到所需匹配的行索引。然后将这些行从A/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