找到A中但不在B中的一个值

时间:2014-05-21 06:58:42

标签: matlab

假设我有

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

我想在A中找到一个但在B中没有的值。我可以执行以下操作:

temp  = setdiff(A,B);
if ~isempty(temp)
  myValue = temp(1);
else
  myValue = [];
end

但是有更快的方法,因为我只需要一个值,而不是全部吗?效率很重要:)

2 个答案:

答案 0 :(得分:3)

由于A1:nB中不在A的{​​{1}}的第一个值是B的排序元素之间的差异大于1。

sortedB = sort(B);

firstMissingValue = find(diff([0,sortedB,size(A,1)])>1,1,'first');

答案 1 :(得分:0)

也许试试看?对我来说它更快,也许你可以试试。

a=ismember(A,B); 
if sum(a)~=0
   myValue = A(a);
   myValue = myValue(1);
else
   myValue =  [];
end