définir ce que vous entendez par comparaison. Si les tableaux sont de la même longueur, et que vous comparez l'égalité, vous pouvez simplement faire foo == bar
- c'est vectorisé. Si vous avez besoin de comparer dans le sens inférieur/supérieur, vous pouvez faire sign(foo-bar)
. Si les tableaux ne sont pas de la même longueur et/ou que vous ne comparez pas les éléments, veuillez préciser ce que vous voulez que la sortie de la comparaison soit. Par exemple,
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])
fait ce que vous demandez, mais il y a probablement une meilleure façon en fonction de ce que vous voulez en tant que sortie.
EDIT (OP clarifié question): Pour trouver des éléments communs dans les 3 tableaux, vous pouvez simplement faire:
>> [intersect(a,[b,c]), intersect(b,c)]
ans =
8 3 5
les tableaux sont de la même longueur, et foo == bar ne fait pas ce que je veux, il ne compare que les éléments avec le même index, ce dont j'ai besoin est de comparer chaque élément d'un tableau avec chaque élément dans les deux autres – sasha
, pour comparer par exemple tableaux foo et bar vous faites bsxfun (@ eq, foo ', bar) (ou bsxfun (@ (x, y) signe (xy), foo', bar) - cela vous donne une matrice où pour la rangée i, il compare ith élément de foo à tous les éléments de la barre –