根据第一列从两个矩阵中减去第二列

时间:2014-03-28 20:51:53

标签: arrays matlab matrix

假设我有2个矩阵A(7x2)和B(3x2)

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]

2 个答案:

答案 0 :(得分: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)]

答案 1 :(得分: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)]