2014-03-28 69 views
0

讓說我有2點矩陣A(7x2)和B(3×2)減去第二列

A = [1 5;2 6;3 7;4 8;5 9;6 10;7 11] 
B = [2 4;4 7;5 3] 

,我想結果是:

C = [2 2;4 1;5 6] 
+1

是否A'的'第一個山坳總是有形式1,2,3。 ..?你應該指定,或者選擇一個更好的例子 –

回答

2

你想要intersect
這樣,即使A不必按順序或從1開始的所有數字,它也能工作。

A = [1 5;2 6;3 7;4 8;5 9;6 10;7 11] 
B = [2 4;4 7;5 3] 

[cc,ia,ib] = intersect(A(:,1),B(:,1)) 
C = [cc,A(ia,2)-B(ib,2)] 
+0

也假設'A(:,1)'不一定是行索引。我偏向'ismember',但'intersect'方便地給你'cc',所以在這裏很不錯。 – chappjc

+0

感謝vish,這_intersect_適用於我的真實案例。 – user3006147

3

ismember做這項工作太:

>> C = [B(:,1) A(ismember(A(:,1),B(:,1)),2) - B(:,2)] 
C = 
    2  2 
    4  1 
    5  6 

或者,如果不是全部的B(:,1)A

[m,locs] = ismember(B(:,1),A(:,1)) 
C = [A(locs,1) A(locs,2) - B(m,2)] 
+0

+1不假設「A」的第一列必然是示例中的形式(反正選擇的示例不正確)。 - 或者,是嗎? –