Extraer valores de una cadena usando sscanf() en MATLAB
Este tutorial analizará el escaneo de una cadena de acuerdo con un formato dado usando la función sscanf()
en MATLAB.
Extraer valores de una cadena usando la función sscanf()
en MATLAB
La función sscanf()
escanea una cadena de acuerdo con un formato dado en MATLAB. Por ejemplo, si la cadena dada contiene números y queremos separarlos y guardarlos en una matriz, podemos usar la función sscanf()
.
El primer argumento de la función sscanf()
es la cadena de entrada, y el segundo argumento es el formato que queremos usar para escanear la cadena como %d
en busca de valores numéricos. El tercer argumento es opcional y define el tamaño para el escaneo de la cadena, y es útil cuando no queremos escanear toda la cadena.
Si no especificamos el tamaño, la función escaneará toda la cadena. La función sscanf()
devuelve cuatro argumentos.
El primer argumento de salida es la matriz que contendrá el resultado del escaneo de la cadena. El segundo argumento de salida es opcional y devuelve la cantidad de elementos que la función ha escaneado con éxito.
El tercer argumento de salida opcional devuelve el mensaje de error que se produjo durante el análisis de la cadena. El cuarto argumento también es opcional y devuelve el siguiente índice de la posición en la que sscanf()
detuvo el proceso de escaneo.
Por ejemplo, creemos una cadena que contenga varios números de punto flotante y sepárelos usando la función sscanf()
en MATLAB.
Código:
clc
clear
My_S = "3.1 2.2 5.2";
num = sscanf(My_S,'%f')
Producción :
num =
3.1000
2.2000
5.2000
En el código anterior, el comando clc
se usa para borrar la ventana de comandos de MATLAB, y el comando clear
se usa para limpiar el espacio de trabajo. Como vemos en el resultado, todos los números de coma flotante se han separado y guardado dentro de una matriz.
Ahora, definamos otra cadena que contenga caracteres y números e intentemos separar los números.
Código:
clc
clear
My_S = "3.1 2.2 hello 5.2";
[num, count, msg, index] = sscanf(My_S,'%f')
Producción :
num =
3.1000
2.2000
count =
2
msg =
'Matching failure in format.'
index =
9
El código anterior definió cuatro argumentos de salida para almacenar todas las salidas de la función sscanf()
. En el resultado anterior, la variable num
contiene solo dos elementos, pero como podemos ver, hay cuatro números en la cadena dada.
El motivo se devuelve en la variable msg
, que dice que hay un error de coincidencia en el formato especificado. Establecimos en el código anterior que queremos escanear los números de punto flotante usando el símbolo %f
, por lo que cuando la función se mueve al número de punto flotante, que es el carácter h
, se detiene allí.
Devolvió el mensaje de error junto con el índice, en el que dejó de escanear la cadena, que es 9
en la salida.
También podemos definir el tamaño como el tercer argumento de entrada dentro de la función sscanf()
. El tamaño está relacionado con el conteo en la salida anterior; si definimos el tamaño como 1
, la función solo leerá el primer elemento de la cadena.
También podemos definir la cadena como m*n
en el caso de una matriz. Esto es útil si solo queremos leer la fila o columna específica de una matriz determinada.
Podemos usar diferentes tipos de formatos para escanear la cadena dada como %d
para números enteros con signo o de base 10, %u
para números enteros sin signo o de base 10, %o
para números octales o de base 8, %x
para números hexadecimales o de base 16 y %f
para números de coma flotante.
Consulte este enlace para obtener más detalles sobre la función sscanf()
.