MATLAB - Chaînes
La création d'une chaîne de caractères est assez simple dans MATLAB. En fait, nous l'avons utilisé plusieurs fois. Par exemple, vous tapez ce qui suit dans l'invite de commande −
Démo en directmy_string = 'Tutorials Point'
MATLAB exécutera l'instruction ci-dessus et renverra le résultat suivant −
my_string = Tutorials Point
MATLAB considère toutes les variables comme des tableaux et les chaînes sont considérées comme des tableaux de caractères. Utilisons le qui commande pour vérifier la variable créée ci-dessus −
whos
MATLAB exécutera l'instruction ci-dessus et renverra le résultat suivant −
Name Size Bytes Class Attributes my_string 1x16 32 char
Fait intéressant, vous pouvez utiliser des fonctions de conversion numérique comme uint8 ou uint16 pour convertir les caractères de la chaîne en leurs codes numériques. Le char la fonction reconvertit le vecteur entier en caractères −
Exemple
Créez un fichier de script et tapez-y le code suivant −
Démo en directmy_string = 'Tutorial''s Point'; str_ascii = uint8(my_string) % 8-bit ascii values str_back_to_char= char(str_ascii) str_16bit = uint16(my_string) % 16-bit ascii values str_back_to_char = char(str_16bit)
Lorsque vous exécutez le fichier, il affiche le résultat suivant −
str_ascii = 84 117 116 111 114 105 97 108 39 115 32 80 111 105 110 116 str_back_to_char = Tutorial's Point str_16bit = 84 117 116 111 114 105 97 108 39 115 32 80 111 105 110 116 str_back_to_char = Tutorial's Point
Tableau de caractères rectangulaire
Les chaînes dont nous avons parlé jusqu'ici sont des tableaux de caractères unidimensionnels; cependant, nous devons stocker plus que cela. Nous devons stocker des données textuelles plus dimensionnelles dans notre programme. Ceci est réalisé en créant des tableaux de caractères rectangulaires.
Le moyen le plus simple de créer un tableau de caractères rectangulaire consiste à concaténer deux ou plusieurs tableaux de caractères unidimensionnels, verticalement ou horizontalement, selon les besoins.
Vous pouvez combiner des chaînes verticalement de l'une des manières suivantes −
-
Utilisation de l'opérateur de concaténation MATLAB [] et en séparant chaque ligne par un point-virgule (;). Veuillez noter que dans cette méthode, chaque ligne doit contenir le même nombre de caractères. Pour les chaînes de longueurs différentes, vous devez compléter avec des espaces si nécessaire.
-
Utilisation du car fonction. Si les chaînes sont de longueurs différentes, char complète les chaînes les plus courtes avec des blancs à la fin afin que chaque ligne ait le même nombre de caractères.
Exemple
Créez un fichier de script et tapez-y le code suivant −
Démo en directdoc_profile = ['Zara Ali '; ... 'Sr. Surgeon '; ... 'R N Tagore Cardiology Research Center'] doc_profile = char('Zara Ali', 'Sr. Surgeon', ... 'RN Tagore Cardiology Research Center')
Lorsque vous exécutez le fichier, il affiche le résultat suivant −
doc_profile = Zara Ali Sr. Surgeon R N Tagore Cardiology Research Center doc_profile = Zara Ali Sr. Surgeon RN Tagore Cardiology Research Center
Vous pouvez combiner des chaînes horizontalement de l'une des manières suivantes −
-
En utilisant l'opérateur de concaténation MATLAB, [] et séparer les chaînes d'entrée par une virgule ou un espace. Cette méthode préserve tous les espaces de fin dans les tableaux d'entrée.
-
Utilisation de la fonction de concaténation de chaînes, strcat . Cette méthode supprime les espaces de fin dans les entrées.
Exemple
Créez un fichier de script et tapez-y le code suivant −
Démo en directname = 'Zara Ali '; position = 'Sr. Surgeon '; worksAt = 'R N Tagore Cardiology Research Center'; profile = [name ', ' position ', ' worksAt] profile = strcat(name, ', ', position, ', ', worksAt)
Lorsque vous exécutez le fichier, il affiche le résultat suivant −
profile = Zara Ali , Sr. Surgeon , R N Tagore Cardiology Research Center profile = Zara Ali,Sr. Surgeon,R N Tagore Cardiology Research Center
Combiner des chaînes dans un tableau de cellules
D'après notre discussion précédente, il est clair que la combinaison de chaînes de différentes longueurs peut être pénible car toutes les chaînes du tableau doivent être de la même longueur. Nous avons utilisé des espaces vides à la fin des chaînes pour égaliser leur longueur.
Cependant, un moyen plus efficace de combiner les chaînes consiste à convertir le tableau résultant en un tableau de cellules.
Le tableau de cellules MATLAB peut contenir différentes tailles et types de données dans un tableau. Les tableaux de cellules offrent un moyen plus flexible de stocker des chaînes de longueur variable.
La cellstr convertit un tableau de caractères en un tableau de cellules de chaînes.
Exemple
Créez un fichier de script et tapez-y le code suivant −
Démo en directname = 'Zara Ali '; position = 'Sr. Surgeon '; worksAt = 'R N Tagore Cardiology Research Center'; profile = char(name, position, worksAt); profile = cellstr(profile); disp(profile)
Lorsque vous exécutez le fichier, il affiche le résultat suivant −
{ [1,1] = Zara Ali [2,1] = Sr. Surgeon [3,1] = R N Tagore Cardiology Research Center }
Fonctions de chaîne dans MATLAB
MATLAB fournit de nombreuses fonctions de chaîne pour créer, combiner, analyser, comparer et manipuler des chaînes.
Le tableau suivant fournit une brève description des fonctions de chaîne dans MATLAB −
Fonction | Objectif |
---|---|
Fonctions pour stocker du texte dans des tableaux de caractères, combiner des tableaux de caractères, etc. | |
vides | Créer une chaîne de caractères vides |
cellstr | Créer un tableau de cellules de chaînes à partir d'un tableau de caractères |
char | Convertir en tableau de caractères (chaîne) |
iscellstr | Déterminer si l'entrée est un tableau de cellules de chaînes |
ischar | Déterminer si l'élément est un tableau de caractères |
sprintf | Formater les données en chaîne |
strcat | Concaténer les chaînes horizontalement |
strjoin | Joindre les chaînes du tableau de cellules en une seule chaîne |
Fonctions pour identifier des parties de chaînes, rechercher et remplacer des sous-chaînes | |
ischar | Déterminer si l'élément est un tableau de caractères |
lettre | Éléments de tableau qui sont des lettres alphabétiques |
estespace | Éléments de tableau qui sont des espaces |
isstrprop | Déterminer si la chaîne appartient à la catégorie spécifiée |
scanf | Lire les données formatées à partir de la chaîne |
strfind | Rechercher une chaîne dans une autre |
strrep | Rechercher et remplacer une sous-chaîne |
strsplit | Diviser la chaîne au délimiteur spécifié |
strtok | Parties sélectionnées de la chaîne |
chaîne de validation | Vérifier la validité de la chaîne de texte |
symvar | Déterminer les variables symboliques dans l'expression |
expression régulière | Reconnaître l'expression régulière (sensible à la casse) |
expression régulière | Reconnaître l'expression régulière (insensible à la casse) |
préparation d'expression régulière | Remplacer la chaîne à l'aide d'une expression régulière |
regexptranslate | Traduire une chaîne en expression régulière |
Fonctions de comparaison de chaînes | |
strcmp | Comparer les chaînes (sensible à la casse) |
strcmpi | Comparer les chaînes (insensible à la casse) |
strncmp | Comparer les n premiers caractères des chaînes (sensible à la casse) |
strncmpi | Comparer les n premiers caractères des chaînes (insensible à la casse) |
Fonctions pour changer la chaîne en majuscules ou minuscules, créer ou supprimer des espaces blancs | |
supprimer | Supprimer les blancs de fin de chaîne |
strtrim | Supprimer les espaces blancs de début et de fin de la chaîne |
plus bas | Convertir la chaîne en minuscules |
supérieur | Convertir la chaîne en majuscule |
strjust | Justifier le tableau de caractères |
Exemples
Les exemples suivants illustrent certaines des fonctions de chaîne mentionnées ci-dessus −
Formatage des chaînes
Créez un fichier de script et tapez-y le code suivant −
Démo en directA = pi*1000*ones(1,5); sprintf(' %f \n %.2f \n %+.2f \n %12.2f \n %012.2f \n', A)
Lorsque vous exécutez le fichier, il affiche le résultat suivant −
ans = 3141.592654 3141.59 +3141.59 3141.59 000003141.59
Joindre des chaînes
Créez un fichier de script et tapez-y le code suivant −
Démo en direct%cell array of strings str_array = {'red','blue','green', 'yellow', 'orange'}; % Join strings in cell array into single string str1 = strjoin(str_array, "-") str2 = strjoin(str_array, ",")
Lorsque vous exécutez le fichier, il affiche le résultat suivant −
str1 = red-blue-green-yellow-orange str2 = red,blue,green,yellow,orange
Rechercher et remplacer des chaînes
Créez un fichier de script et tapez-y le code suivant −
Démo en directstudents = {'Zara Ali', 'Neha Bhatnagar', ... 'Monica Malik', 'Madhu Gautam', ... 'Madhu Sharma', 'Bhawna Sharma',... 'Nuha Ali', 'Reva Dutta', ... 'Sunaina Ali', 'Sofia Kabir'}; % The strrep function searches and replaces sub-string. new_student = strrep(students(8), 'Reva', 'Poulomi') % Display first names first_names = strtok(students)
Lorsque vous exécutez le fichier, il affiche le résultat suivant −
new_student = { [1,1] = Poulomi Dutta } first_names = { [1,1] = Zara [1,2] = Neha [1,3] = Monica [1,4] = Madhu [1,5] = Madhu [1,6] = Bhawna [1,7] = Nuha [1,8] = Reva [1,9] = Sunaina [1,10] = Sofia }
Comparer des chaînes
Créez un fichier de script et tapez-y le code suivant −
Démo en directstr1 = 'This is test' str2 = 'This is text' if (strcmp(str1, str2)) sprintf('%s and %s are equal', str1, str2) else sprintf('%s and %s are not equal', str1, str2) end
Lorsque vous exécutez le fichier, il affiche le résultat suivant −
str1 = This is test str2 = This is text ans = This is test and This is text are not equal
MATLAB