HOWTO · MATLAB
Concatenar cadena en MATLAB
Uno puede concatenar cadenas usando la función `strcat()` en MATLAB.
En esta página
Usa strcat() para combinar valores de texto en MATLAB. También funciona elemento por elemento con arreglos compatibles, por lo que puedes crear varios valores etiquetados en una sola llamada. Elige con cuidado el tipo de entrada: los arreglos de cadenas y los vectores de caracteres de MATLAB no se comportan igual con + ni con los espacios en blanco.
Concatenar texto con strcat()
Llama a strcat(value1, value2, ...) para unir texto de izquierda a derecha. Cuando las entradas son vectores de caracteres, strcat() elimina los espacios finales de cada una antes de unirlas. Esto puede ser útil si el relleno es accidental, pero significa que no conviene confiar en los espacios finales para separar palabras. Añade un separador explícito cuando sea necesario.
Ejecuta este ejemplo. El código y las etiquetas o salidas visibles se conservan en inglés; la salida muestra el texto concatenado sin espacio entre la coma y el nombre:
El código y las etiquetas o salidas visibles de esta sección se mantienen en inglés.
hello = 'Hello, ';
name = 'Alice';
result = strcat(hello, name, '!');
fprintf('%s\n', result);
Hello,Alice!
Las entradas son vectores de caracteres y el resultado también lo es. Para los escalares de cadena de MATLAB, usa comillas dobles, como en strcat("Hello, ", "Alice!"); esto devuelve un escalar de cadena. Mantén diferenciadas las formas de cadena y de vector de caracteres al adaptar los ejemplos, sobre todo cuando combines valores de distintas fuentes.
Concatenar arreglos con strcat()
Cuando las entradas de un arreglo tienen tamaños compatibles, strcat() combina los elementos correspondientes y devuelve un arreglo con la forma correspondiente. Un valor de texto escalar se puede combinar con cada elemento de un arreglo. Por ejemplo, con un arreglo de cadenas names = ["Alice", "Bob", "Charlie"], strcat("Hello, ", names) produce un saludo para cada nombre. MATLAB también admite arreglos de celdas con vectores de caracteres, como names = {'Alice', 'Bob', 'Charlie'}; usa la sintaxis de arreglos de celdas de forma coherente cuando el código circundante espera ese tipo. Las dimensiones de los arreglos deben ser compatibles con la operación. Si las entradas no se pueden emparejar según las reglas de arreglos de MATLAB, ajusta sus formas o combina valores escalares. Un arreglo de celdas con vectores de caracteres y un arreglo de cadenas son tipos distintos: conserva la representación que espera el código posterior en lugar de suponer que son intercambiables.
Añadir separadores y gestionar los espacios en blanco
strcat() no inserta signos de puntuación ni separadores entre palabras. Con vectores de caracteres, también elimina los espacios finales de cada entrada; por eso, un argumento independiente ' ' se recorta y no crea un espacio visible. Para insertar un espacio normal entre vectores de caracteres, incluye el separador en una cadena de formato con sprintf().
El código y las etiquetas o salidas visibles se conservan en inglés; el ejemplo muestra los dos nombres separados por un espacio:
El código y las etiquetas o salidas visibles de esta sección se mantienen en inglés.
first = 'Ada';
last = 'Lovelace';
fullName = sprintf('%s %s', first, last);
fprintf('%s\n', fullName);
Este ejemplo imprime los dos nombres con un espacio entre ellos. Para escalares de cadena de MATLAB, strcat("Ada", " ", "Lovelace") conserva el separador de cadena explícito. Si quieres insertar un separador entre todos los elementos de un arreglo, join() está diseñada para esa tarea y acepta un delimitador; en cambio, strcat() concatena los elementos correspondientes. Los espacios iniciales no son lo mismo que los finales, así que revisa los valores de entrada si el formato sigue sin ser el esperado.
Elegir entre strcat() y +
Usa strcat() cuando necesites su comportamiento de concatenación de texto para vectores de caracteres o arreglos de cadenas. El operador + concatena arreglos de cadenas de MATLAB, por lo que puede ser conciso cuando ambos operandos son cadenas. En los vectores de caracteres, + realiza una suma numérica de sus códigos de caracteres; no concatena el texto visible. Convierte los vectores de caracteres en cadenas antes de usar +, o usa strcat() para concatenarlos.
Por ejemplo, "Good " + "morning" combina dos escalares de cadena en "Good morning". En cambio, 'A' + 'B' suma los códigos de caracteres elemento por elemento; como ambos vectores de caracteres tienen un elemento, sus dimensiones son compatibles y el resultado es el valor numérico 131 (65 + 66). No deduzcas el resultado únicamente por las comillas si los valores pudieron convertirse antes en el programa: comprueba si cada variable es un arreglo de cadenas, un vector de caracteres o un arreglo de celdas. Esa distinción entre tipos es la clave para elegir el operador y prever el resultado.