70 votes

La fonction MATLAB pour 'ne de la matrice contiennent la valeur de X?' (ala php in_array())

Est-il construit en fonction matlab pour savoir si une matrice contient une valeur?

Merci

11voto

Amro Points 72743

vous pouvez le faire:

A = randi(10, [3 4]);      %# a random matrix
any( A(:)==5 )             %# does A contain 5?


Pour faire le ci-dessus dans un vectorisé , utilisez:

any( bsxfun(@eq, A(:), [5 7 11] )

ou comme @copeaux de bois suggère:

ismember([5 7 11], A)

3voto

Dennis Jaheruddin Points 10154

Si vous avez besoin de vérifier si les éléments d'un vecteur sont dans l'autre, la meilleure solution est - ismember comme mentionné dans les autres réponses.

ismember([15 17],primes(20))

Toutefois, lorsque vous traitez avec des nombres à virgule flottante, ou simplement pour faire fermer correspond à (+- 1000 est également possible), la meilleure solution que j'ai trouvé est assez efficace d'Échange de Fichier de Soumission: ismemberf

Il donne un exemple très pratique:

[tf, loc]=ismember(0.3, 0:0.1:1) % returns false 
[tf, loc]=ismemberf(0.3, 0:0.1:1) % returns true

Bien que la tolérance par défaut devraient normalement être suffisant, il vous donne plus de flexibilité

ismemberf(9.99, 0:10:100) % returns false
ismemberf(9.99, 0:10:100,'tol',0.05) % returns true

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X