La Web del Programador: Comunidad de Programadores
https://www.lawebdelprogramador.com/foros/Matlab/916767-Ficheros-txt-en-MATLAB.html

Ficheros *.txt en MATLAB

Ficheros *.txt en MATLAB

Publicado por Javier (27 intervenciones) el 19/12/2007 11:15:49
Hola!
Mi problema es el siguiente: Necesito importar un fichero del bloc de notas a Matlab y al hacerlo parece que la cosa va bien, el fichero esta formado por filas de letras y numeros(como una tabla), pero al abrirlo despues de ser creado me salen todas las variables de una misma fila en un solo cuadrito del array editor. ¿Como puedo hacer para que salga cada dato en su cuadro correspondiente?
Gracias de antemano y que alguien me ayude porfavor!!

RE:Ficheros *.txt en MATLAB

Publicado por javier (27 intervenciones) el 19/12/2007 12:52:52
No se si me he explicado bien. Mi problema esque al abrir un fichero .txt que contiene letras y numero me da error si utilizo el comando load, textread... y demas. Al importarlo desde el Workspace me ocurre el problema dicho antes que me salen todos los datos en una columna y sin ninguna separacion. Por favor que laguien me ayude que me e quedado atascado en esto

RE:Ficheros *.txt en MATLAB

Publicado por Kike (304 intervenciones) el 19/12/2007 15:03:27
Prueba esto, tal vez funcione:

% abrir archivo para leerlo
id=fopen('nombre_archivo','r');
if id==-1
error(sprintf('El archivo "%s" no pudo abrirse para lectura.','nombre_archivo'))
end

% mientras no llegue al final del archivo seguirá leyendo
Lineas={ }; % cell array que contendrá las líneas
while ~feof(id)
linea = fgetl(id); % lee toda la línea
Lineas{end+1,1}=linea;
end

fclose(id) % cierra el archivo leído

RE:Ficheros *.txt en MATLAB

Publicado por javier (27 intervenciones) el 20/12/2007 10:35:57
Pues no funciona nada.Cuando ejecuto el primer parrafo me da id=-1 y por tanto me sale el error que me as escrito. Despues al ejecutar el segundo parrafo cuando termino el while me sale el error:

??? Error using ==> feof
Invalid file identifier -1.

Luego al cerrar el archivo me sale

??? Error using ==> fclose

Asique no hay manera. Si se te ocurre algo mas a ti o a alguien o sabeis como solucionar esto porfavor os lo agradeceria porque llevo 3 dias parado sin poder seguir acuenta de esto.
Gracias de antemano

RE:Ficheros *.txt en MATLAB

Publicado por Kike (304 intervenciones) el 20/12/2007 15:24:04
Bueno, este es el archivo de texto de prueba, que lo llamo Documento:
bfj 45 89
456 uuk 232
121 32 23
ujh kh gg
141 23 3

Este es el archivo m, que lo llamo ar:
% abrir archivo para leerlo
id=fopen('C:MATLAB7workDocumento.txt','r');
if id==-1
error(sprintf('El archivo "%s" no pudo abrirse para lectura.','Documento'))
end

% mientras no llegue al final del archivo seguirá leyendo
Lineas={ }; % cell array que contendrá las líneas
while ~feof(id)
linea = fgetl(id); % lee toda la línea
Lineas{end+1,1}=linea;
end

fclose(id); % cierra el archivo leído

Lineas


La única diferencia es que agregué la extensión del archivo de texto y especifiqué su ruta, pero no es necesario especificar la ruta si el archivo de texto está en la carpeta donde está el archivo m.

Al ejecutarlo da este resultado:
>> ar

Lineas =

'bfj 45 89'
'456 uuk 232'
'121 32 23'
'ujh kh gg'
'141 23 3'

Cada elemento de Lineas es una fila completa. Hace unos días alguien preguntó cómo separar una fila en palabras, y alguien le sugirió usar el comando strtok.
sin imagen de perfil

RE:Ficheros *.txt en MATLAB

Publicado por Itcel Nicte Ha (9 intervenciones) el 23/06/2015 00:40:54
disculpen como podria mandar a traer un bloc de notas en una interfaz de usuario??

RE:Ficheros *.txt en MATLAB

Publicado por Luis Miguel (1 intervención) el 23/01/2008 10:06:06
segun me dices tienes un fichero del bloc de notas. la forma mas facil de hacer es:

load nombrefichero.extension

esto te creara una variable en el workspace que es una matriz. Esta matriz llevara el nombre de nombrefichero y la podras usar tranquilamente con este nombre.

RE:Ficheros *.txt en MATLAB

Publicado por Sonia (1 intervención) el 22/08/2012 13:38:23
Gracias!! load funciona genial!!

RE:Ficheros *.txt en MATLAB

Publicado por edwin (2 intervenciones) el 10/01/2013 19:20:06
Hola soy nuevo en matlab tengo un fichere txt y se muestra asi




=== Predictions on test data ===

inst# actual predicted error prediction
1 1:? 6:06 + 0.924


pero solo me intersa leer la quinta columna de la fila 3 , osea 0,924 ,

saludos
Imágen de perfil de enrique morales

RE:Ficheros *.txt en MATLAB

Publicado por enrique morales (9 intervenciones) el 10/11/2014 22:46:11
buenas..
Con la instrucción que nos recomendaste si aparece la matriz pero sin ninguna dimensión, te cuento mi problema y te agradecería si puedes ayudarme.
Tengo un grupo de datos entre los que la primera fila lleva el nombre característico de los datos que representa cada columna por ejemplo:
año mes día hora dirección velocidad
1979 10 1 3 150 7
1979 10 2 6 180 9


no he podido leerlos para hacer el respectivo tratamiento estadístico con ellos, te agradecería si puedes colaborarme con ese problema..


cordialmente:
enrique morales
Imágen de perfil de william cabrera

RE:Ficheros *.txt en MATLAB

Publicado por william cabrera (13 intervenciones) el 18/11/2014 16:16:31
Para tu caso que el archivo tiene esta estructura:

año mes día hora dirección velocidad
1979 10 1 3 150 7
1979 10 2 6 180 9

el código sería así:

nombre_archivo=fopen('archivo.txt','r+');
data= fread(nom_archivo);

pos_columna=strfind(char(data)','velocidad');

%ahora le decimos que empiece a cargar justo después de que aparece velocidad
%en el código le colocamos pos_columna(1,2)+9, el 9 se le suma por que velocidad tiene 9 caracteres
% es decir empiece a organizar después de la palabra velocidad.
% El [6, inf] se escribe por que el archivo contiene 6 columnas y muchas filas

matriz_con_los_datos=sscanf(char(data(pos_columna(1,1)+9:end)),'%g',[6,inf])';
fclose(nom_archivo)

%fin
Imágen de perfil de william

RE:Ficheros *.txt en MATLAB

Publicado por william (13 intervenciones) el 20/11/2014 23:11:21
Para tu caso que el archivo tiene esta estructura:

año mes día hora dirección velocidad
1979 10 1 3 150 7
1979 10 2 6 180 9

el código sería así:

nom_archivo=fopen('archivo.txt','r+');
data= fread(nom_archivo);

pos_columna=strfind(char(data)','velocidad');

%ahora le decimos que empiece a cargar justo después de que aparece velocidad
%en el código le colocamos pos_columna(1,2)+9, el 9 se le suma por que velocidad tiene 9 caracteres
% es decir empiece a organizar después de la palabra velocidad.
% El [6, inf] se escribe por que el archivo contiene 6 columnas y muchas filas

matriz_con_los_datos=sscanf(char(data(pos_columna(1,1)+9:end)),'%g',[6,inf])';
fclose(nom_archivo)

%fin