MATLAB - Cadenas
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 −
Demostración en vivomy_string = 'Tutorials Point'
MATLAB ejecutará la instrucció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 el quién comando para verificar la variable creada arriba −
whos
MATLAB ejecutará la instrucción anterior y devolverá el siguiente resultado −
Name Size Bytes Class Attributes my_string 1x16 32 char
Curiosamente, puede usar funciones de conversión numérica como uint8 o uint16 para convertir los caracteres de la cadena en sus códigos numéricos. El carácter La función vuelve a convertir el vector entero en caracteres −
Ejemplo
Cree un archivo de script y escriba el siguiente código en él −
Demostración en vivomy_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 rectangulares
Las cadenas que hemos discutido hasta ahora son arreglos de caracteres unidimensionales; sin embargo, necesitamos almacenar más que eso. Necesitamos almacenar más datos textuales 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 concatenar 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 maneras −
-
Uso del 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.
-
Usando el carácter funció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 la misma cantidad de caracteres.
Ejemplo
Cree un archivo de script y escriba el siguiente código en él −
Demostración en vivodoc_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 maneras −
-
Utilizando 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 −
Demostración en vivoname = '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 combinar cadenas con diferentes longitudes podría ser una molestia ya que todas las cadenas en 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. Los arreglos de celdas brindan una forma más flexible de almacenar cadenas de diferentes longitudes.
La cadena de celdas La función convierte una matriz de caracteres en una matriz de cadenas de celdas.
Ejemplo
Cree un archivo de script y escriba el siguiente código en él −
Demostración en vivoname = '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 cadenas en MATLAB
MATLAB ofrece numerosas funciones de cadenas que crean, combinan, analizan, comparan y manipulan 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 | Crear cadena de caracteres en blanco |
cellstr | Crear una matriz de celdas de cadenas a partir de una matriz de caracteres |
char | Convertir a matriz de caracteres (cadena) |
iscellstr | Determinar si la entrada es una matriz de cadenas de celdas |
iscar | Determinar si el elemento es una matriz de caracteres |
sprintf | Dar formato a los datos en cadena |
strcat | Concatenar cadenas horizontalmente |
strjoin | Unir cadenas en la matriz de celdas en una sola cadena |
Funciones para identificar partes de cadenas, buscar y reemplazar subcadenas | |
iscar | 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 de espacio |
isstrprop | Determinar si la cadena es de la categoría especificada |
scanf | Leer datos formateados de una cadena |
strfind | Encontrar una cadena dentro de otra |
strrep | Buscar y reemplazar subcadena |
strsplit | Dividir cadena en el delimitador especificado |
strtok | Partes seleccionadas de la cadena |
validarcadena | Comprobar la validez de la cadena de texto |
variable simbólica | Determinar variables simbólicas en expresión |
regexp | Hacer coincidir expresión regular (sensible a mayúsculas y minúsculas) |
regexpi | Coincidir con expresión regular (sin distinción entre mayúsculas y minúsculas) |
regexprep | Reemplazar cadena usando expresión regular |
regexptranslate | Traducir cadena a expresión regular |
Funciones para comparación de cadenas | |
strcmp | Comparar cadenas (sensible a mayúsculas y minúsculas) |
strcmpi | Comparar cadenas (sin distinción entre mayúsculas y minúsculas) |
strncmp | Compara los primeros n caracteres de las cadenas (se distingue entre mayúsculas y minúsculas) |
strncmpi | Compara los primeros n caracteres de las cadenas (sin distinción entre mayúsculas y minúsculas) |
Funciones para cambiar cadenas a mayúsculas o minúsculas, crear o eliminar espacios en blanco | |
desen blanco | Elimine los espacios en blanco finales del final de la cadena |
strtrim | Eliminar los espacios en blanco iniciales y finales de la cadena |
inferior | Convertir cadena a minúsculas |
superior | Convertir cadena a mayúsculas |
strjust | Justificar matriz de caracteres |
Ejemplos
Los siguientes ejemplos ilustran algunas de las funciones de cadena mencionadas anteriormente −
Cadenas de formato
Cree un archivo de script y escriba el siguiente código en él −
Demostración en vivoA = 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 −
Demostración en vivo%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
Buscar y reemplazar cadenas
Cree un archivo de script y escriba el siguiente código en él −
Demostración en vivostudents = {'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 −
Demostración en vivostr1 = '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
MATLAB