Matlab - Comment puis-je comparer deux chaînes de lettre par lettre?
En gros, j'ai deux chaînes de longueur égale, disons 'AGGTCT" et "AGGCCT" pour des exemples de saké. Je veux les comparer poste par poste et d'obtenir une lecture de quand ils ne correspondent pas. Donc ici, je l'espère pour obtenir 1 car il est à seulement 1 position où ils ne correspondent pas à la position 4. Si quelqu'un a des idées pour le positionnement de comparaison de code qui m'aiderait beaucoup pour commencer.
Merci!!!!!
Oui, je veux juste le nombre de décalages pour l'appliquer à d'autres fins.
Ok. Ensuite, Shai la réponse est exactement ce que vous voulez.
Je devine votre question que vous avez affaire avec des séquences d'ADN qui ont seulement 4 caractères - A,G,C,T. Dans ce cas, je vous recommande fortement de les représentant sous la forme codée des tableaux de doubles, et seulement la conversion de chaînes de caractères lorsque vous avez besoin de les montrer à l'utilisateur. Toutes les opérations que vous avez besoin sera beaucoup plus rapide et plus pratique
Merci. C'est un bon point, me donne quelque chose à regarder jusqu'à la prochaine. Je suis un peu nouveau à tout cela, donc j'ai toujours apprécié de plus de pointeurs.
Ok. Ensuite, Shai la réponse est exactement ce que vous voulez.
Je devine votre question que vous avez affaire avec des séquences d'ADN qui ont seulement 4 caractères - A,G,C,T. Dans ce cas, je vous recommande fortement de les représentant sous la forme codée des tableaux de doubles, et seulement la conversion de chaînes de caractères lorsque vous avez besoin de les montrer à l'utilisateur. Toutes les opérations que vous avez besoin sera beaucoup plus rapide et plus pratique
Merci. C'est un bon point, me donne quelque chose à regarder jusqu'à la prochaine. Je suis un peu nouveau à tout cela, donc j'ai toujours apprécié de plus de pointeurs.
OriginalL'auteur user2180513 | 2013-05-16
Vous devez vous connecter pour publier un commentaire.
Utilisez la syntaxe suivante pour obtenir le nombre de caractères dissemblables pour les chaînes de taille égale:
Si vous voulez être sensible à la casse, utilisez:
L'expression
str1 ~= str2
effectue char par char comparaison de deux chaînes, ce qui donne une logique vecteur de la même taille que les cordes, avectrue
où ils décalage (à l'aide de~=
) etfalse
où elles correspondent. Pour obtenir votre résultat tout simplement la somme du nombre detrue
valeurs (décalages).EDIT: si vous voulez compter le nombre de correspondance des caractères, vous pouvez:
Utiliser "égal à"
==
opérateur (au lieu de "non égal à"~=
opérateur):Soustraire le nombre de décalage, à partir du nombre total:
Supposons que vous vouliez somme le "falses' (allumettes), seriez-vous en mesure d'insérer quelque chose d'autre dans le milieu des deux chaînes?
Vous devriez regarder les relation les opérateurs. Vous pouvez les comparer à l'aide de
==
Si cela répond à votre question, alors s'il vous plaît marquer que correct! (cliquez sur la case à cocher)
OriginalL'auteur Shai
Vous pouvez comparer tous les élément de la chaîne:
Cela permettra de comparer char par char et retourne true si tous les éléments de la matrice résultante est vrai. Si les chaînes de caractères peuvent avoir des tailles différentes vous pouvez comparer les tailles de première. Une alternative est
Une autre solution est d'utiliser
strcmp
:strcmp()
, car elle permet de comparer des chaînes de longueurs différentes. Alors queseq1 == seq2
suppose qu'ils ont la même longueur. I. e. vous ne pouvez pas comparer comme'John' == 'Bob'
, mais vous pouvez utiliserstrcmp('John', 'Bob')
.OriginalL'auteur Batsu
Tiens à souligner que vous demandez pour calculer la la distance de hamming (comme vous vous demandez alternatives - l'article contient quelques liens vers des). C'est déjà discuté ici. En bref le groupe builtin commande pdist peut le faire.
OriginalL'auteur bdecaf