Programación Específica > Matlab

 Problema Para Leer Txt

(1/1)

pati.difusa:
Hola

Tengo un problema y es que no sé leer un fichero txt en matlab.

El txt contiene los siguientes datos:

MODELO1   1.23   3.8   4
MODELO2   0.35   1.4   4.5
MODELO3   9.87   0.76  1.67

He estado mirando en varios foros y no encuentro solución alguna. Mi nivel de matlab es  bastante básico y me parece complicadísimo leer dato por dato.

He consultado las funciones fgetl, fseek, ftell... pero no me aclaro y necesito leer dato por dato (palabra por palabra) ya que si el usuario elige el modelo 2 tiene unas especificaciones diferentes al modelo1 o modelo3.

Agradecería mucho que me ayudárais.

Muchas gracias y saludos

allisap:
Saludos  :D

mira puedes leer usando el fscanf

por ejemplo

--- Código: Text --- fid = fopen('control4.txt');   a = fscanf(fid,'%f %f %f %f',[4 inf]);tiempo=size(a,2);columna1=a(1,:);columna2=a(2,:);columna3=a(2,:);  

te regresara los datos contenidos en el archivo control4.txt
que en mi caso es un archivo de 4 columnas de datos numéricos
 
espero te sirva

pati.difusa:
Muchas gracias allisap, al final lo conseguí utilizando textread ;)

paulao:

--- Cita de: "pati.difusa" ---Muchas gracias allisap, al final lo conseguí utilizando textread ;)
--- Fin de la cita ---
Hola me llamo Paula y soy nueva en el tema de matlab y la lectura de un archivo txt! tambien necesito ayuda!!!!!

Este es el formato de archivo caso1.txt

x : tiempo
N:  de nodos (nod)



              NT11: PI: PART-1-              NT11: PI: PART-1-              NT11: PI: PART-1-
 
 X                   1 N: 1                             1 N: 10                           1 N: 100
 0.                      0.                                    0.                                      0.  
200.E-06             1.                                    1.                                      1.  

 
hice este archivo pero no  funciona bien!!!!!!

fabaqus=fopen('caso1.txt','r');
fgets(fabaqus);
fgets(fabaqus);
line=fgets(fabaqus);
nod=(length(line)-30)/18
fgets(fabaqus);
sline=fgets(fabaqus);
[a,n]=sscanf(sline,'%f');
fclose(fabaqus);



el tema es que yo necesito  leer la cantiaad de N  que no se cuanto es porq para cada archivo varia  y luego tomar los datos a partir de de donde dice x y los valores para luego aplicar otras funciones matematicas.
lo importante es que tuve q generarlo a partir de esa resta para q solo me lea los nodos


alguien podria ayudarme porq este programa no sabe que realice no sabe contar bien la cantidad de nodos que tengo y encima creo q lee hasta una determinada cantidad de datos??
que diferencia hay si escribo fscanf en vez de scanf? quizas ese sea el problema




desde ya muchas gracias!!!!!!!! :rolleyes:

paula

allisap:
saludos

bueno.. no me  queda muy claro que datos son los que quieres leer de  tu archivo de texto y quiza el problema es que tienes combinadas etiquetas con datos numericos,


lo de leer solo una cantidad determinada de datos, no se en realidad cuantos sean pero yo leido archivos de mas de 5000 datos y no tenido quejas de matlab

tienes que usar el fscanf porque estas leyendo de un archivo (la f indica file)

Navegación

[0] Índice de Mensajes

Ir a la versión completa