2013-10-27 58 views
0

假設如何從ismember

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我想從A 32512199.67 5401001.32 353.5832512196.71 5401001.69 346.62或B提取32512199.67 5401001.32 347.0032512196.71 5401001.69 346.87 我該怎麼辦?

+0

告訴我們你嘗試過什麼。 – jkshah

+0

EX =找到(ismember(A(:,[1,2]),B(:,[1,2]), '行')); 但它不是答案。 –

回答

0

首先使用ismemberfind找到所需的匹配的行索引。然後提取這些行從A/BXA/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 
+0

這裏該算法的答案,但是當我跑我的數據不回答。 你能幫助我嗎? TNX。 –

+0

@ahmadhosseini你的意思是說,你沒有得到輸出顯示?如果是的話,只要執行'disp(XA)'等。或者在行尾刪除分號。更新我的答案。我認爲打印矩陣的價值非常簡單。 – jkshah

+0

我知道,我的意思是,答案是錯誤的:( –

1
inds = find(~ismember(A, B, 'rows')); 
new_inds = find(ismember(A(inds, 1:2), B(:, 1:2), 'rows')); 
inds(new_inds) 
+0

謝謝U. 但對我來說重要的提取有不同的Z. –

+0

即行3和第5行,對嗎?也請看jkshah的解決方案。 – 2013-10-27 09:56:01