MATLAB - Cuerdas

Crear una cadena de caracteres es bastante simple en MATLAB. De hecho, lo hemos usado muchas veces. Por ejemplo, escribe lo siguiente en el símbolo del sistema:

my_string = 'Tutorials Point'

MATLAB ejecutará la declaración anterior y devolverá el siguiente resultado:

my_string = Tutorials Point

MATLAB considera todas las variables como matrices y las cadenas se consideran matrices de caracteres. Usemos elwhos comando para verificar la variable creada anteriormente -

whos

MATLAB ejecutará la declaración anterior y devolverá el siguiente resultado:

Name           Size            Bytes  Class    Attributes
my_string      1x16               32  char

Curiosamente, puede utilizar funciones de conversión numérica como uint8 o uint16para convertir los caracteres de la cadena a sus códigos numéricos. loschar función convierte el vector entero de nuevo a caracteres -

Ejemplo

Cree un archivo de script y escriba el siguiente código en él:

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)

Cuando ejecuta el archivo, muestra el siguiente resultado:

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

Matriz de caracteres rectangular

Las cadenas que hemos discutido hasta ahora son matrices de caracteres unidimensionales; sin embargo, necesitamos almacenar más que eso. Necesitamos almacenar datos textuales más dimensionales en nuestro programa. Esto se logra mediante la creación de matrices de caracteres rectangulares.

La forma más sencilla de crear una matriz de caracteres rectangular es concatenando dos o más matrices de caracteres unidimensionales, ya sea vertical u horizontalmente, según sea necesario.

Puede combinar cadenas verticalmente de cualquiera de las siguientes formas:

  • Usando el operador de concatenación de MATLAB []y separando cada fila con un punto y coma (;). Tenga en cuenta que en este método cada fila debe contener el mismo número de caracteres. Para cadenas con diferentes longitudes, debe rellenar con caracteres de espacio según sea necesario.

  • Utilizando el charfunción. Si las cadenas tienen diferentes longitudes, char rellena las cadenas más cortas con espacios en blanco al final para que cada fila tenga el mismo número de caracteres.

Ejemplo

Cree un archivo de script y escriba el siguiente código en él:

doc_profile = ['Zara Ali                             '; ...
               'Sr. Surgeon                          '; ...
               'R N Tagore Cardiology Research Center']
doc_profile = char('Zara Ali', 'Sr. Surgeon', ...
                  'RN Tagore Cardiology Research Center')

Cuando ejecuta el archivo, muestra el siguiente resultado:

doc_profile =
Zara Ali                             
Sr. Surgeon                          
R N Tagore Cardiology Research Center
doc_profile =
Zara Ali                            
Sr. Surgeon                         
RN Tagore Cardiology Research Center

Puede combinar cadenas horizontalmente de cualquiera de las siguientes formas:

  • Usando el operador de concatenación de MATLAB, []y separando las cadenas de entrada con una coma o un espacio. Este método conserva los espacios finales en las matrices de entrada.

  • Usando la función de concatenación de cadenas, strcat. Este método elimina los espacios finales en las entradas.

Ejemplo

Cree un archivo de script y escriba el siguiente código en él:

name =     'Zara Ali                             ';
position = 'Sr. Surgeon                          '; 
worksAt =  'R N Tagore Cardiology Research Center';
profile = [name ', ' position ', ' worksAt]
profile = strcat(name, ', ', position, ', ', worksAt)

Cuando ejecuta el archivo, muestra el siguiente resultado:

profile = Zara Ali      , Sr. Surgeon      , R N Tagore Cardiology Research Center
profile = Zara Ali,Sr. Surgeon,R N Tagore Cardiology Research Center

Combinar cadenas en una matriz de celdas

De nuestra discusión anterior, está claro que la combinación de cadenas con diferentes longitudes podría ser una molestia, ya que todas las cadenas de la matriz deben tener la misma longitud. Hemos utilizado espacios en blanco al final de las cadenas para igualar su longitud.

Sin embargo, una forma más eficiente de combinar las cadenas es convertir la matriz resultante en una matriz de celdas.

La matriz de celdas de MATLAB puede contener diferentes tamaños y tipos de datos en una matriz. Las matrices de celdas proporcionan una forma más flexible de almacenar cadenas de diferente longitud.

los cellstr La función convierte una matriz de caracteres en una matriz de celdas de cadenas.

Ejemplo

Cree un archivo de script y escriba el siguiente código en él:

name =     'Zara Ali                             ';
position = 'Sr. Surgeon                          '; 
worksAt =  'R N Tagore Cardiology Research Center';
profile = char(name, position, worksAt);
profile = cellstr(profile);
disp(profile)

Cuando ejecuta el archivo, muestra el siguiente resultado:

{                                                                               
   [1,1] = Zara Ali                                                              
   [2,1] = Sr. Surgeon                                                           
   [3,1] = R N Tagore Cardiology Research Center                                 
}

Funciones de cadena en MATLAB

MATLAB proporciona numerosas funciones de cadenas para crear, combinar, analizar, comparar y manipular cadenas.

La siguiente tabla proporciona una breve descripción de las funciones de cadena en MATLAB:

Función Propósito
Funciones para almacenar texto en matrices de caracteres, combinar matrices de caracteres, etc.
espacios en blanco Crea una cadena de caracteres en blanco
celltr Crear una matriz de celdas de cadenas a partir de una matriz de caracteres
carbonizarse Convertir a matriz de caracteres (cadena)
iscellstr Determinar si la entrada es una matriz de cadenas de celdas
ischar Determinar si el elemento es una matriz de caracteres
sprintf Dar formato a los datos en una cadena
strcat Concatenar cadenas horizontalmente
strjoin Unir cadenas en una matriz de celdas en una sola cadena
Funciones para identificar partes de cadenas, buscar y reemplazar subcadenas
ischar Determinar si el elemento es una matriz de caracteres
isletter Elementos de matriz que son letras alfabéticas
espacio Elementos de matriz que son caracteres espaciales
isstrprop Determinar si la cadena pertenece a la categoría especificada
sscanf Leer datos formateados de una cadena
strfind Encuentra una cuerda dentro de otra
strrep Buscar y reemplazar subcadena
strsplit Dividir cadena en el delimitador especificado
strtok Partes seleccionadas de cuerda
validatestring Verificar la validez de la cadena de texto
symvar Determinar variables simbólicas en expresión
regexp Coincidir con expresión regular (distingue entre mayúsculas y minúsculas)
regexpi Coincidir con expresión regular (no distingue entre mayúsculas y minúsculas)
regexprep Reemplazar cadena usando expresión regular
regexptranslate Traducir cadena a expresión regular
Funciones para la comparación de cadenas
strcmp Comparar cadenas (distingue entre mayúsculas y minúsculas)
strcmpi Comparar cadenas (no distingue entre mayúsculas y minúsculas)
strncmp Comparar los primeros n caracteres de cadenas (distingue entre mayúsculas y minúsculas)
strncmpi Comparar los primeros n caracteres de cadenas (no distingue entre mayúsculas y minúsculas)
Funciones para cambiar la cadena a mayúsculas o minúsculas, crear o eliminar espacios en blanco
deblank Pele los espacios en blanco finales del final de la cuerda
strtrim Eliminar los espacios en blanco iniciales y finales de la cadena
inferior Convertir cadena a minúscula
Superior Convertir cadena a mayúscula
strjust Justificar la matriz de caracteres

Ejemplos

Los siguientes ejemplos ilustran algunas de las funciones de cadena mencionadas anteriormente:

Formateo de cadenas

Cree un archivo de script y escriba el siguiente código en él:

A = pi*1000*ones(1,5);
sprintf(' %f \n %.2f \n %+.2f \n %12.2f \n %012.2f \n', A)

Cuando ejecuta el archivo, muestra el siguiente resultado:

ans =  3141.592654 
   3141.59 
   +3141.59 
      3141.59 
   000003141.59

Unir cadenas

Cree un archivo de script y escriba el siguiente código en él:

%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, ",")

Cuando ejecuta el archivo, muestra el siguiente resultado:

str1 = red-blue-green-yellow-orange
str2 = red,blue,green,yellow,orange

Encontrar y reemplazar cadenas

Cree un archivo de script y escriba el siguiente código en él:

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)

Cuando ejecuta el archivo, muestra el siguiente resultado:

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
}

Comparación de cadenas

Cree un archivo de script y escriba el siguiente código en él:

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

Cuando ejecuta el archivo, muestra el siguiente resultado:

str1 = This is test
str2 = This is text
ans = This is test and This is text are not equal