MATLAB - Cordes
Créer une chaîne de caractères est assez simple dans MATLAB. En fait, nous l'avons utilisé à plusieurs reprises. Par exemple, vous tapez ce qui suit dans l'invite de commande -
my_string = 'Tutorials Point'
MATLAB exécutera l'instruction ci-dessus et retournera 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 lewhos commande pour vérifier la variable créée ci-dessus -
whos
MATLAB exécutera l'instruction ci-dessus et retournera 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 telles que uint8 ou uint16pour convertir les caractères de la chaîne en leurs codes numériques. lechar la fonction convertit le vecteur entier en caractères -
Exemple
Créez un fichier de script et tapez le code suivant dedans -
my_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 discuté jusqu'ici sont des tableaux de caractères unidimensionnels; cependant, nous devons stocker plus que cela. Nous devons stocker plus de données textuelles 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 au moins deux 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 séparer 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 différentes longueurs, vous devez compléter avec des caractères d'espacement si nécessaire.
En utilisant le charfonction. Si les chaînes sont de longueurs différentes, char remplit les chaînes les plus courtes avec des espaces de fin de sorte que chaque ligne ait le même nombre de caractères.
Exemple
Créez un fichier de script et tapez le code suivant dedans -
doc_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:
À l'aide de 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.
En utilisant 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 le code suivant dedans -
name = '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
Combinaison de chaînes dans un tableau de cellules
D'après notre discussion précédente, il est clair que combiner des chaînes de différentes longueurs pourrait ê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.
le cellstr La fonction convertit un tableau de caractères en un tableau de cellules de chaînes.
Exemple
Créez un fichier de script et tapez le code suivant dedans -
name = '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 créant, combinant, analysant, comparant et manipulant 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. | |
blancs | 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 |
carboniser | 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 |
isletter | Éléments de tableau qui sont des lettres alphabétiques |
espace | Éléments de tableau qui sont des caractères d'espace |
isstrprop | Déterminer si la chaîne appartient à la catégorie spécifiée |
sscanf | Lire les données formatées à partir de la chaîne |
strfind | Trouver une chaîne dans une autre |
strrep | Rechercher et remplacer la sous-chaîne |
strsplit | Fractionner la chaîne au délimiteur spécifié |
strtok | Parties sélectionnées de la chaîne |
validatestring | Vérifier la validité de la chaîne de texte |
symvar | Déterminer les variables symboliques dans l'expression |
expression régulière | Faire correspondre l'expression régulière (sensible à la casse) |
regexpi | Correspondre à une expression régulière (insensible à la casse) |
regexprep | Remplacer la chaîne à l'aide d'une expression régulière |
regexptranslate | Traduire la chaîne en expression régulière |
Fonctions de comparaison de chaînes | |
strcmp | Comparer les chaînes (sensible à la casse) |
strcmpi | Comparer des 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 | |
déblank | Supprimez les blancs de fin de chaîne |
strtrim | Supprimer les espaces blancs de début et de fin de la chaîne |
inférieur | Convertir la chaîne en minuscules |
plus haut | Convertir la chaîne en majuscules |
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 le code suivant dedans -
A = 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 le code suivant dedans -
%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
Recherche et remplacement de chaînes
Créez un fichier de script et tapez le code suivant dedans -
students = {'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
}
Comparaison de chaînes
Créez un fichier de script et tapez le code suivant dedans -
str1 = '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