HOWTO · MATLAB
Convertir número a cadena en MATLAB
Este tutorial analizará la conversión de un número a una cadena mediante la función num2str() en MATLAB.
En esta página
Para convertir un valor numérico en texto de caracteres en MATLAB, usa num2str(); para valores enteros, usa int2str(), y usa string() cuando necesites datos de tipo string de MATLAB. Por ejemplo, num2str(42) produce el texto de caracteres 42. La elección importa al dar formato a decimales o trabajar con matrices, porque las funciones devuelven distintos tipos de datos de texto.
Convertir un número en texto en MATLAB
Elige el tipo de resultado según lo que necesite la siguiente operación: num2str() e int2str() devuelven matrices de caracteres, mientras que string() devuelve datos de tipo string de MATLAB. Las matrices de caracteres son útiles con funciones orientadas a caracteres más antiguas y con operaciones de formato; las matrices de strings resultan prácticas cuando el resto del código espera strings de MATLAB.
Los ejemplos ejecutables que siguen usan sintaxis compatible con Octave y compartida con MATLAB. El ejemplo de num2str() muestra la conversión de un valor numérico escalar a caracteres, y el de int2str() muestra la conversión de un entero a caracteres; ambos aparecen en las secciones dedicadas a esas funciones. La sección de string() describe por separado los datos de tipo string de MATLAB, ya que aquí no se presupone que Octave sea compatible. Los dos ejemplos de Octave de las secciones de num2str() e int2str() se ejecutaron correctamente y produjeron 42 y -23, respectivamente. La ilustración de sintaxis de string() es específica de MATLAB y, según las pruebas proporcionadas, no se verificó en tiempo de ejecución.
Usar num2str() para valores numéricos y darles formato
Usa num2str() para valores numéricos en general, incluidos enteros, decimales y matrices. Su forma básica es num2str(A). Para controlar el formato mostrado de un escalar, pasa una especificación de formato como num2str(x, '%.2f'); para controlar las cifras significativas, pasa una precisión como num2str(x, 4). Estas opciones tienen distintos significados: la especificación de formato controla el patrón de impresión, mientras que el argumento numérico de precisión establece las cifras significativas. Para fijar el número de decimales, suele ser más claro usar un formato como '%.2f'.
Ejecuta este ejemplo:
value = 42;
textValue = num2str(value);
disp(textValue);
42
textValue contiene datos de caracteres con los dígitos. Para un decimal, num2str(3.14159) produce un texto como 3.1416 con el formato predeterminado. Para controlar el número de decimales, proporciona una especificación de formato: num2str(3.14159, '%.2f') produce 3.14. La forma con un segundo argumento numérico controla las cifras significativas: num2str(3.14159, 4) produce 3.142. Son controles distintos: '%.2f' solicita dos dígitos después del separador decimal, mientras que 4 solicita cuatro cifras significativas. Estos casos adicionales son ilustraciones de sintaxis y resultados; de acuerdo con las pruebas proporcionadas, solo se ejecutó el ejemplo anterior que produce 42.
Para una matriz numérica, num2str([1.25 2.5]) produce texto de caracteres parecido a 1.25 2.5, con espacios entre los valores; una matriz bidimensional produce varias filas de datos de caracteres. No crea una matriz de strings de MATLAB con un elemento por número. También puedes usar num2str() con notación científica; la representación elegida depende del valor y de las opciones de formato, así que evita depender de una forma concreta de escribir el exponente cuando sea importante. Especifica un formato para hacer explícita la representación. El caso de la matriz también es una ilustración que no se ejecutó aquí.
Para seleccionar un dígito por posición, primero convierte el número en datos de caracteres y luego indexa esa matriz de caracteres. Por ejemplo, digits = num2str(9876); secondDigit = digits(2); selecciona el carácter '8'. Esto es indexación de caracteres: secondDigit es un carácter, no un valor numérico. Si necesitas hacer operaciones aritméticas después, conviértelo por separado; str2num() analiza texto numérico, aunque para un solo dígito str2double() es una opción de análisis más directa.
Usar int2str() para valores enteros
Usa int2str() cuando la entrada represente enteros y baste con una representación sencilla en caracteres. Acepta valores enteros escalares o en matrices y devuelve datos de caracteres. En una matriz, los elementos se muestran como texto alineado dentro de una matriz de caracteres; los espacios sirven para alinear las columnas, no para separar los valores mediante delimitadores.
Ejecuta este ejemplo:
count = -23;
countText = int2str(count);
disp(countText);
-23
Para una matriz de enteros, int2str([12 345; 6 78]) produce una matriz de caracteres con dos filas, correspondientes a las dos filas de la entrada; los espacios alinean los valores de cada columna. Este resultado de matriz es una ilustración que no se ejecutó aquí.
Para valores decimales, formatos específicos o controlar las cifras significativas, es preferible num2str(). int2str() no es una función de formato y no debe usarse si necesitas conservar una parte fraccionaria.
Usar string() para crear matrices de strings de MATLAB
Usa string() de MATLAB para convertir valores numéricos en datos de tipo string. Para un escalar, string(42) crea el valor string "42". Para una matriz, string([42 3.14]) crea una matriz de strings de 1 por 2 con los valores ["42" "3.14"]; cada elemento corresponde a una entrada numérica, en vez de devolver una sola matriz de caracteres con toda la fila. Esta forma elemento a elemento suele resultar práctica al combinar los valores con otros strings. Estos resultados escalares y de matriz ilustran el comportamiento de MATLAB y no se verificaron en tiempo de ejecución con las pruebas proporcionadas.
Los ejemplos de esta sección son ilustraciones de sintaxis de MATLAB, no ejemplos verificados en tiempo de ejecución. Si necesitas una matriz de strings, comprueba que tu entorno de MATLAB admita la función y confirma cómo se muestra el resultado en ese entorno; no consideres char() una conversión equivalente de números a texto. char() convierte códigos de caracteres o datos de tipo string en matrices de caracteres; es una operación distinta.
Distinguir el texto numérico de los códigos de caracteres
Convertir a texto un número como 65 da los dígitos 65; no produce el carácter A. En cambio, char(65) convierte el código de carácter numérico 65 en el carácter correspondiente a la codificación que usa MATLAB. Los códigos de caracteres y los caracteres resultantes dependen de la representación de caracteres admitida, así que este no es un método general para dar formato a números como texto.
Mantén separadas estas tareas: usa num2str() o int2str() para obtener texto de caracteres que represente valores numéricos, y usa string() cuando necesites datos de tipo string de MATLAB. Si necesitas un dígito en una posición concreta, indexa la matriz de caracteres después de la conversión; analiza el carácter seleccionado por separado solo si necesitas obtener un valor numérico.