Определите, что вы подразумеваете под сравнением. Если массивы имеют одинаковую длину, и вы сравниваете равенство, тогда вы можете просто сделать foo == bar
- это векторизация. Если вам нужно сравнить в смысле меньше или больше, вы можете сделать sign(foo-bar)
. Если массивы не имеют одинаковую длину и / или вы не сравниваете поэлементно - уточните, какими должны быть результаты сравнения. Например,
foo = 1:3;
bar = [1,2,4];
baz = 1:2;
sign(repmat(foo',1,length([bar,baz])) - repmat([bar, baz],length(foo),1))
# or, more concisely:
bsxfun(@(x,y)sign(x-y),foo',[bar,baz])
делает то, что вы просите, но, возможно, есть лучший способ, в зависимости от того, что вы хотите получить.
РЕДАКТИРОВАТЬ (уточненный вопрос):
Чтобы найти общие элементы в 3 массивах, вы можете просто сделать:
>> [intersect(a,[b,c]), intersect(b,c)]
ans =
8 3 5