2016-11-27 61 views
0

例如我有: [1 3; 2 4; 2 5; 3 3] 並希望有: [(1,3);(2,4);(2,5);(3,3)]如何從數組(k,2)中創建有序對的數組(k,1)?

我實際上需要採取兩個數組(k, 2)並計算有多少對相同。例如,如果我有: A = [1 3; 2 4; 2 5; 3 5]和B = [2 3; 2 1; 2 4; 3 5] 我想答案是2. 由於作爲集合(每4個有序對), 交集A和B包含兩個元素。

謝謝!

回答

2

知道多少的A行與B行一致,使用ismember'rows'選項:

sum(ismember(A, B, 'rows')) 

例如:

>> A = [1 3; 2 4; 2 5; 3 5]; 
>> B = [2 3; 2 1; 2 4; 3 5]; 
>> sum(ismember(A, B, 'rows')) 
ans = 
    2 
+0

考慮這個測試用例'A = [1 3 ; 2 4; 2 3; 3 5]; B = [2 3; 2 1; 2 4; 3 5; 2 3]; n1 = sum(ismember(A,B,'rows')); n2 = sum(ismember(B,A,'rows'));'哪一個是正確的:'n1'? 'n2'? '分鐘(N1,N2)'? 'MAX(N1,N2)'? – rahnema1

+0

我試過了,n2給出了錯誤。 n1給出3,這是我需要的。謝謝! – user135172

+3

@ rahnema1如果將'A'和'B'(按行)視爲_sets_(如OP所述),則它們不包含重複的行,然後'n1'和'n2'會給出相同的結果。或者使用'intersect(A,B,'rows')'自動進行重複數據刪除 –

相關問題