Insertar variable en cadena en MATLAB

Ammar Ali 18 agosto 2022
Insertar variable en cadena en MATLAB

Este tutorial analizará la inserción de un valor de variable en una cadena utilizando la función num2str() en MATLAB.

Insertar variable en cadena en MATLAB

Si queremos insertar el valor de una variable en una cadena, necesitamos convertir el valor en una cadena o una matriz de caracteres usando la función num2str(), y luego podemos concatenarla con la cadena usando la función strcat() función. Por ejemplo, insertemos un número de coma flotante en una cadena.

Vea el código a continuación.

clc
clear

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

Producción :

s3 =

    "value is 100.577"

También podemos agregar precisión o el número de dígitos que queremos ver en la salida usando el segundo argumento de la función num2str(), y su entrada debe ser un número entero positivo. El segundo argumento establece el número máximo de dígitos que se convertirán en una cadena, y la entrada debe ser un número de coma flotante si queremos establecer la precisión.

Por ejemplo, convirtamos solo los primeros 3 elementos del número en una cadena y concatenemos con la otra cadena. Vea el código a continuación.

clc
clear

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

Producción :

s3 =

    "value is 10.2"

En la salida, la cadena s3 solo contiene 3 dígitos del número de coma flotante porque hemos establecido la precisión en 3 en la función num3str(). Si no establecemos la precisión, la función num2str() convertirá el número completo en una matriz de caracteres.

También podemos establecer el tipo de formato de la entrada como el número de dígitos significativos en el caso de números de coma flotante usando el carácter f con el signo de porcentaje, y podemos pasar el número de dígitos significativos entre el porcentaje y f carácter. Por ejemplo, redondeemos el número largo de punto flotante a 2 dígitos significativos y luego concatenémoslo con una cadena.

Vea el código a continuación.

clc
clear

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

Producción :

s3 =

    "value is 10.22"

Podemos ver en el resultado anterior que el número se redondea a dos dígitos significativos. En el código anterior, hemos definido la cadena usando comillas dobles, pero también podemos definir una cadena usando comillas simples.

También podemos concatenar múltiples stings en la misma línea usando la función strcat(). Solo tenemos que pasar todas las variables de cadena en la función.

También podemos usar el signo más entre dos o más cadenas para concatenarlas y obtener una sola cadena. En el código anterior, hemos agregado manualmente un espacio entre el número y la cadena, pero si definimos la cadena con comillas simples, no podremos agregar un espacio entre las dos variables.

Por ejemplo, repitamos el ejemplo anterior usando comillas simples. Vea el código a continuación.

clc
clear

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

Producción :

s3 =

    'value is10.218'

En el resultado anterior, hemos agregado un espacio en la cadena s2, pero el espacio no está presente en la cadena s3. Si usamos el signo más, la salida será la misma.

Para evitar este problema, al menos una de las cadenas que se concatenan debe ser una cadena, no un vector o matriz de caracteres. La función num2str() siempre devuelve una matriz de caracteres, pero podemos usar la función string() para obtener la salida como una cadena.

Por ejemplo, usemos la función string() en el ejemplo anterior. Vea el código a continuación.

clc
clear

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

Producción :

s3 =

    "value is 10.218"

Podemos ver que el espacio está presente en la salida entre el número y la cadena, y la salida también está en el tipo de datos de cadena. Si tenemos una gran variedad de caracteres o cadenas y queremos unirlos e incluir un espacio u otro delimitador entre ellos, podemos usar las funciones join() y strjoin().

Podemos usar la función join() si los valores que queremos unir están en un vector o matriz, y si los valores están en una matriz, tenemos que usar la función strjoin(). Podemos unir variables de diferentes tipos de datos usando la función join(), pero tenemos que poner todas las variables en un solo vector o matriz y pasarlo dentro de la función join() para unirlas.

Por ejemplo, unamos una cadena, una matriz de caracteres y un valor numérico usando la función join(). Vea el código a continuación.

clc
clear

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

Producción :

s =

    "Value is 100.55 kg"

Tenga en cuenta que al menos un valor de las variables que queremos unir debe ser una cadena; de lo contrario, el resultado puede cambiar. En el resultado anterior, las tres variables se han unido; el resultado se guarda como una cadena porque una entrada es una cadena.

También podemos usar la función strjoin(), pero las variables que queremos unir deben ser del tipo de datos de matriz de caracteres y estar encerradas en una matriz. Por defecto, las funciones join() y strjoin() ponen espacio entre los valores del vector o array, pero también podemos poner otros delimitadores y caracteres usando el segundo argumento de las funciones join() y strjoin() funciones.

Tenemos que pasar el delimitador como un arreglo de caracteres dentro de la función join() o strjoin() para agregarlos entre los elementos del vector o arreglo. Por ejemplo, repitamos el ejemplo anterior usando un delimitador diferente.

Vea el código a continuación.

clc
clear

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

Producción :

s =

    "Value is--100.55--kg"

Podemos ver en la salida anterior que el delimitador de entrada se agrega a la salida en lugar del delimitador de espacio. También podemos agregar una cadena o matriz de caracteres de cualquier longitud como delimitador entre los elementos de la matriz o matriz dada.

También podemos usar la función sprintf() de Matlab, que se usa para agregar datos formateados en una cadena o matriz de caracteres. El primer argumento de la función sprintf() son las especificaciones de formato, y los siguientes argumentos son las variables que queremos poner en una cadena o matriz de caracteres.

Si las especificaciones de formato se definen como una cadena usando comillas dobles, la salida de la función sprintf() también será una cadena. Si las especificaciones de formato se definen como una matriz de caracteres usando comillas simples, la salida de la función sprintf() también será una matriz de caracteres.

Podemos usar las especificaciones de formato de la misma manera que usamos anteriormente en el caso de la función num2str(). Podemos usar el signo de porcentaje; después de eso, podemos pasar el ancho del campo y luego podemos pasar el tipo de datos.

Por ejemplo, agreguemos variables de diferentes tipos de datos a una cadena usando la función sprintf(). Vea el código a continuación.

clc
clear

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

Producción :

s =

    "Value is 100.5 kg"

En el código anterior, usamos %s para el tipo de datos de cadena y %f para el tipo de datos de punto flotante. También definimos el número de dígitos significativos en el caso de los números de coma flotante.

En el código anterior, guardamos las cadenas en variables, luego las pasamos en la función sprintf(), pero también podemos escribir cadenas directamente en el primer argumento de la función. En el caso de variables de cadena grandes, deberíamos guardarlas en variables y pasarlas dentro de la función sprintf() para simplificar.

También podemos usar símbolos para otros tipos de datos como %c para caracteres, %d para números enteros, etc. Consulta este enlace para obtener más detalles sobre la función sprintf().

Autor: 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

Artículo relacionado - MATLAB String