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