Insérer une variable dans une chaîne dans MATLAB

Ammar Ali 18 aout 2022
Insérer une variable dans une chaîne dans MATLAB

Ce tutoriel discutera de l’insertion d’une valeur variable dans une chaîne à l’aide de la fonction num2str() dans MATLAB.

Insérer une variable dans une chaîne dans MATLAB

Si nous voulons insérer la valeur d’une variable dans une chaîne, nous devons convertir la valeur en une chaîne ou un tableau de caractères à l’aide de la fonction num2str(), puis nous pouvons la concaténer avec la chaîne à l’aide de la fonction strcat() fonction. Par exemple, insérons un nombre à virgule flottante dans une chaîne.

Voir le code ci-dessous.

clc
clear

n = 100.577;
s1 = num2str(n);
s2 = "value is ";
s3 = strcat(s2,s1)

Production:

s3 =

    "value is 100.577"

Nous pouvons également ajouter une précision ou le nombre de chiffres que nous voulons voir dans la sortie en utilisant le deuxième argument de la fonction num2str(), et son entrée doit être un entier positif. Le deuxième argument définit le nombre maximum de chiffres qui seront convertis en une chaîne, et l’entrée doit être un nombre à virgule flottante si nous voulons définir la précision.

Par exemple, convertissons uniquement les 3 premiers éléments du nombre en une chaîne et concaténons-le avec l’autre chaîne. Voir le code ci-dessous.

clc
clear

n = 10.212;
s1 = num2str(n,3);
s2 = "value is ";
s3 = strcat(s2,s1)

Production:

s3 =

    "value is 10.2"

Dans la sortie, la chaîne s3 ne contient que 3 chiffres du nombre à virgule flottante car nous avons défini la précision sur 3 dans la fonction num3str(). Si nous ne définissons pas la précision, la fonction num2str() convertira le nombre entier en un tableau de caractères.

Nous pouvons également définir le type de formatage de l’entrée comme le nombre de chiffres significatifs dans le cas des nombres à virgule flottante en utilisant le caractère f avec le signe de pourcentage, et nous pouvons passer le nombre de chiffres significatifs entre le pourcentage et f personnage. Par exemple, arrondissons le nombre à virgule flottante long à 2 chiffres significatifs, puis concaténons-le avec une chaîne.

Voir le code ci-dessous.

clc
clear

n = 10.218;
s1 = num2str(n,'%0.2f');
s2 = "value is ";
s3 = strcat(s2,s1)

Production:

s3 =

    "value is 10.22"

Nous pouvons voir dans la sortie ci-dessus que le nombre est arrondi à deux chiffres significatifs. Dans le code ci-dessus, nous avons défini la chaîne à l’aide de guillemets doubles, mais nous pouvons également définir une chaîne à l’aide de guillemets simples.

On peut aussi concaténer plusieurs stings dans la même ligne en utilisant la fonction strcat(). Nous n’avons qu’à passer toutes les variables de chaîne dans la fonction.

Nous pouvons également utiliser le signe plus entre deux ou plusieurs chaînes pour les concaténer et obtenir une seule chaîne. Dans le code ci-dessus, nous avons ajouté manuellement un espace entre le nombre et la chaîne, mais si nous définissons la chaîne avec des guillemets simples, nous ne pourrons pas ajouter d’espace entre les deux variables.

Par exemple, répétons l’exemple ci-dessus en utilisant des guillemets simples. Voir le code ci-dessous.

clc
clear

n = 10.218;
s1 = num2str(n);
s2 = 'value is ';
s3 = strcat(s2,s1)

Production:

s3 =

    'value is10.218'

Dans la sortie ci-dessus, nous avons ajouté un espace dans la chaîne s2, mais l’espace n’est pas présent dans la chaîne s3. Si nous utilisons le signe plus, la sortie sera la même.

Pour éviter ce problème, au moins une des chaînes concaténées doit être une chaîne, et non un vecteur de caractères ou un tableau. La fonction num2str() renvoie toujours un tableau de caractères, mais nous pouvons utiliser la fonction string() pour obtenir la sortie sous forme de chaîne.

Par exemple, utilisons la fonction string() dans l’exemple ci-dessus. Voir le code ci-dessous.

clc
clear

n = 10.218;
s1 = string(n);
s2 = 'value is ';
s3 = s2 + s1

Production:

s3 =

    "value is 10.218"

Nous pouvons voir que l’espace est présent dans la sortie entre le nombre et la chaîne, et la sortie est également dans le type de données chaîne. Si nous avons un long tableau de caractères ou de chaînes et que nous voulons les joindre et inclure un espace ou un autre délimiteur entre eux, nous pouvons utiliser les fonctions join() et strjoin().

Nous pouvons utiliser la fonction join() si les valeurs que nous voulons joindre sont dans un vecteur ou une matrice, et si les valeurs sont dans un tableau, nous devons utiliser la fonction strjoin(). Nous pouvons joindre des variables de différents types de données à l’aide de la fonction join(), mais nous devons mettre toutes les variables dans un seul vecteur ou matrice et le passer à l’intérieur de la fonction join() pour les joindre.

Par exemple, joignons une chaîne, un tableau de caractères et une valeur numérique à l’aide de la fonction join(). Voir le code ci-dessous.

clc
clear

n = 100.55;
s1 = "Value is";
s2 = 'kg';
n = [s1,n,s2];
s = join(n)

Production:

s =

    "Value is 100.55 kg"

Notez qu’au moins une valeur des variables que nous voulons joindre doit être une chaîne ; sinon, le résultat peut changer. Dans la sortie ci-dessus, les trois variables ont été réunies ; le résultat est enregistré sous forme de chaîne car une entrée est une chaîne.

Nous pouvons également utiliser la fonction strjoin(), mais les variables que nous voulons joindre doivent être de type tableau de caractères et enfermées dans un tableau. Par défaut, les fonctions join() et strjoin() mettent un espace entre les valeurs du vecteur ou du tableau, mais on peut aussi mettre d’autres délimiteurs et caractères en utilisant le deuxième argument des fonctions join() et strjoin() les fonctions.

Nous devons passer le délimiteur sous forme de tableau de caractères à l’intérieur de la fonction join() ou strjoin() pour les ajouter entre les éléments du vecteur ou du tableau. Par exemple, répétons l’exemple ci-dessus en utilisant un délimiteur différent.

Voir le code ci-dessous.

clc
clear

n = 100.55;
s1 = "Value is";
s2 = 'kg';
n = [s1,n,s2];
s = join(n,'--')

Production:

s =

    "Value is--100.55--kg"

Nous pouvons voir dans la sortie ci-dessus que le délimiteur d’entrée est ajouté à la sortie au lieu du délimiteur d’espace. Nous pouvons également ajouter une chaîne ou un tableau de caractères de n’importe quelle longueur comme délimiteur entre les éléments de la matrice ou du tableau donné.

On peut aussi utiliser la fonction sprintf() de Matlab, qui sert à ajouter des données formatées dans une chaîne ou un tableau de caractères. Le premier argument de la fonction sprintf() est les spécifications de format, et les arguments suivants sont les variables que nous voulons mettre dans une chaîne ou un tableau de caractères.

Si les spécifications de format sont définies comme une chaîne à l’aide de guillemets doubles, la sortie de la fonction sprintf() sera également une chaîne. Si les spécifications de format sont définies comme un tableau de caractères à l’aide de guillemets simples, la sortie de la fonction sprintf() sera également un tableau de caractères.

Nous pouvons utiliser les spécifications de format de la même manière que nous avons utilisé ci-dessus dans le cas de la fonction num2str(). Nous pouvons utiliser le signe pourcentage ; après cela, nous pouvons passer la largeur du champ, puis nous pouvons passer le type de données.

Par exemple, ajoutons différents types de données variables à une chaîne en utilisant la fonction sprintf(). Voir le code ci-dessous.

clc
clear

n = 100.55;
s1 = "Value is";
s2 = 'kg';
s = sprintf("%s %0.1f %s",s1,n,s2)

Production:

s =

    "Value is 100.5 kg"

Dans le code ci-dessus, nous avons utilisé %s pour le type de données chaîne et %f pour le type de données à virgule flottante. Nous avons également défini le nombre de chiffres significatifs dans le cas des nombres à virgule flottante.

Dans le code ci-dessus, nous avons enregistré les chaînes dans des variables, puis les avons passées dans la fonction sprintf(), mais nous pouvons également écrire directement des chaînes dans le premier argument de la fonction. Dans le cas de grandes variables de chaîne, nous devrions les enregistrer dans des variables et les passer à l’intérieur de la fonction sprintf() pour plus de simplicité.

Nous pouvons également utiliser des symboles pour d’autres types de données comme %c pour les caractères, %d pour les entiers, etc. Consultez ce lien pour plus de détails sur la fonction sprintf().

Auteur: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

Article connexe - MATLAB String