Matlab - Duda con fscanf

 
Vista:
sin imagen de perfil

Duda con fscanf

Publicado por Guillermo (5 intervenciones) el 25/04/2015 14:16:37
¿Alguien sabe como usar la función fscanf teniendo en cuenta los espacios?

Me explico. Tengo un documento .txt lleno de lineas con este formato:

1696149 622 1 0.000 0.010 0.1SS

He intento leerlos como: '%7f%3f%2f%2f%17f%17f%7f%1s%s%[^\n\r]' usando la herramienta de impordata integrada en matlab.

La primera variable lo hace perfecto pues coge los 7 primeros digitos, pero en la segunda variable tiene que coger los 3 digitos a continuación pero como se salta los espacios en vez de coger solo el 6 coge 622.

Creo que si de alguna manera fscanf lograra tener en cuenta los espacios el problema estaria solucionado.

Muchas gracias por adelantado. Saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Duda con fscanf

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 25/04/2015 15:01:02
"La primera variable lo hace perfecto pues coge los 7 primeros digitos, pero en la segunda variable tiene que coger los 3 digitos a continuación pero como se salta los espacios en vez de coger solo el 6 coge 622."

"Cuando dices la primera variable hace perfecto y coge los 7 primeros" estas diciendo que coge 1696149

"Cuando dices la segunda variable tiene que coger los 3 digitos a continuación", estas diciendo que debe coger 622.
pero acabas diciendo en vez de coger solo 6, coge 622. Esta parte no esta clara. Podrías explicar con mayor detalle.

Saludos.
JOSE JEREMÍAS CABALLERO
Asesoría online en Matlab
Servicios de programación matlab
[email protected]
skype: josejeremiascaballero
Estimado Usuario, el correo es para servicios de cursos, asesoría y programación. Toda ayuda gratuita es vía foro.


http://matlabcaballero.blogspot.com

http://www.lawebdelprogramador.com/foros/Matlab/1371532-FORMA_DE_APRENDER_MATLAB.html
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Duda con fscanf

Publicado por Guillermo (5 intervenciones) el 25/04/2015 16:55:42
Si, llevas razón me explique mal

Quiero decir que después de coger los primeros 7 caracteres, que en este caso son números, luego ha de coger los siguientes 3.

Ha de coger por lo tanto dos espacios y un número. Pero creo que la función fscanf se salta los espacios, luego cuando le digo que coja 3 (%3f) coge los 3 dígitos siguientes.

Esto ocurre porque en el fichero de texto original que tengo viene rellenado con numero de no siempre la misma longitud. Unas veces tengo

1696149 622 1 0.000 0.010 0.1SS

u otras puedo tener

169614966222 1 1 0.000 0.010 0.1SS

en cuyo caso necesito que se guarde por un lado los 7 primeros, despumes los 3 siguientes, después 2 y luego otra vez 2. Independientemente si hay un espacio o un número

Espero que le haya quedado mas claro y gracias por el interés mostrado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Duda con fscanf

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 25/04/2015 17:03:50
¿En realidad que es lo deseas guardar?.¿Numero o espacios blancos?. ¿Cuál es la secuencia que debe guardar?.
¿7caracteres, luego 3 caracteres, luego 2carateres, luego 2 caracteres? en todas las filas del archivo texto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Duda con fscanf

Publicado por Guillermo (5 intervenciones) el 25/04/2015 17:26:12
Eso es, le pongo un extracto de varias lineas más del archivo de texto que intento leer para explicarme mejor:

1696149 622 1 0.000 0.010 0.1SS
628806 2 1 1 0.000 180.000 0.1SS
628806 218 1 0.000 180.000 0.3SS
2196376 0 1 1 0.000 0.000 7.3SS
2196376 024 1 0.000 0.000 7.3SS
940551 18 1 1 0.000 180.000 0.5SS
940551 1810 1 0.000 180.000 0.5SS

En la primera ha de guardarse 7 números (1696149), luego los 3 siguientes (dos espacios y 6), luego dos (22) y luego otros dos (espacio 1) .

Otro ejemplo seria en la ultima linea 7 números (espacio 940551), luego los 3 siguientes (espacio 18), luego dos (10) y luego otros dos (espacio 1) .

En realidad no necesito almacenar en mis variables los espacios, solo necesito que el puntero de la función fscanf los tenga en cuenta al ir recorriendo el fichero, para poder almacenar la cantidad de números de cada variable.

Una vez mas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar