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