Programación Específica > Matlab
Pasar caracteres numericos a su valor
allisap:
saludos:
se me ocurren 2 opciones:
1.- Que es lo que genera tu archivo de texto ? puedes cambiar el formato del archivo, es decir , en lugar de X100000Y200000, que aparezca X 100000 Y 100000, el espacio solucionaria tu problema porque lees un caracter usando %c y cuando lo encuentres lo comparas con X o Y y luego lees el valor que sigue con %d o %f para guardarlo en el vector que corresponde....
2.- Si no es posible cambiar el archivo de entrada desde el origen .... pues has primero un conversor de formato... es decir un programa que lo que va estar haciendo es leer el archivo de texto caracter por caracter,pegandolo en un archivo de texto de salida , y cuando encuentre una X o una Y que inserte un espacio en blanco en el archivo de salida ...al final tendras un archivo identitco pero con los caracteres y los valores numericos separados...
espero te sirva ...
Victor Pasilla Campos
Puebla, Mexico
Richi254:
Lo intento ahora mismo, muchas gracias.
Ah, el archivo de texto lo genera un programa de diseño, son coordenadas cartesianas como habrás supuesto. Y no, no puedo cambiar el formato de salida de los datos :( (MÁS TRABAJO!) En fin, a programar!!
GRACIAS de nuevo.
UN SALUDO.
Geo:
scanf es más potente de lo que parece :).
Una opción sería leer el archivo línea por línea con fgetl, y darle formato con sscanf:
--- Código: Text --- % Da formato a la línea A = sscanf( linea, 'X%6dY%6d*') % Separa en los vectores X y Y X( numLinea ) = A( 1 ); Y( numLinea ) = A( 2 ); Así trabajarías línea por línea e irías llenando los vectores X y Y.
Otra opción, es con fscanf, puedes ir paso a paso o leer todo el archivo de un solo golpe:
--- Código: Text --- % Abre archivof = fopen( 'solocodigo.txt', 'rt' );% Lee todos los valores numéricos a un vector[ A vals ] = fscanf( f, 'X%6dY%6d*n' )fclose( f ); En este caso, todos los valores numéricos del archivo quedan guardados en el vector columna A, ya de ahí puedes separarlos.
Pero bueno, MATLAB ya cuenta con una forma de conseguir justo lo que quieres: textscan :D
--- Código: Text --- % Abre archivof = fopen( 'solocodigo.txt', 'rt' );% Lee datos con el formato indicado y los coloca en la celda CC = textscan( f, 'X%6dY%6d*' );% Cierra el archivofclose( f ); % Asigna vectores X y Y de la celdaX = C{1}';Y = C{2}';
Te recomiendo trabajar con esta última opción, la cual es muy potente y te ahorra mucho trabajo :). Aún asi, tengo los códigos completos para las dos primeras (con sscanf y fscanf), son sencillas pero ocupan mucho espacio :P, por si los quieres solo pídelos.
Suerte :).
Navegación
[*] Página Anterior
Ir a la versión completa