J'ai deux tableaux de chaînes de cellules, et je veux vérifier si elles contiennent les mêmes chaînes (ils ne doivent pas être dans le même ordre, nous ne savons pas si elles sont de les mêmes longueurs).MATLAB: comparaison des tableaux de cellules de la chaîne
Par exemple:
a = {'2' '4' '1' '3'};
b = {'1' '2' '4' '3'};
ou
a = {'2' '4' '1' '3' '5'};
b = {'1' '2' '4' '3'};
D'abord je pensais que des strcmp
mais nécessiterait une boucle plus d'un contenu de la cellule et comparer contre l'autre. Je considérais aussi ismember
en utilisant quelque chose comme:
ismember(a,b) & ismember(b,a)
mais nous ne savons pas à l'avance qu'ils sont de la même longueur (cas évident de l'inégalité). Alors, comment effectueriez-vous cette comparaison de la manière la plus efficace sans écrire trop de cas d'if/else.
Pour évaluer les performances, vous devez comparer une autre solution, comme la suggestion que vous avez faite en utilisant une boucle et [STRCMP] (http://www.mathworks.com/access/helpdesk/help/techdoc/ref/strcmp). html). J'imagine que la performance serait parfaitement bien, mais si vous découvrez que l'utilisation de [SETXOR] (http://www.mathworks.com/access/helpdesk/help/techdoc/ref/setxor.html) finit vraiment par être un goulot d'étranglement dans votre traitement, vous pouvez essayer de regarder son code source ('type setxor' ou' edit setxor') et le réécrire en coupant quelques erreurs-vérification, etc – gnovice
merci, je pense que je vois ce que @Mikhail essayait de faire. Qu'en est-il des performances? il semble que XOR de deux ensembles est une opération coûteuse quand tout ce dont j'ai besoin est un vrai/faux type de réponse – Dave
oups, j'ai édité mon commentaire et foiré la commande .. désolé – Dave