• Lunes 23 de Diciembre de 2024, 03:22

Autor Tema:  importar VARIOS .txt en MATLAB  (Leído 16420 veces)

saweso

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
importar VARIOS .txt en MATLAB
« en: Martes 19 de Mayo de 2009, 14:51 »
0
Tengo un problemilla, y es que tengo 18 archivos .txt con diferentes columnas de datos que necesito meter en vectores de matlab. Esta cuestión ya está resuelta para 1 archivo. Por ejemplo, la llamada es:

A=importdata('C:UsersSaWeSoDesktopTesiWork_DeCandiaVersione33PEC_PMC_MMFresultsPEC_PMC_dati_modo_1_lambda=1.55.txt');

Tengo 18 archivos que distan del que he puesto en el numero en negrita. Quiero saber como podría hacer para, usando un bucle "for" de variable, por ejemplo k, en plan (for K=1:18) para ir llamando a todos los archivos uno tras otro.

Se os ocurre algo?

Muchas gracias.  
PD: ¿hay algun comando que lea TODOS los ficheros .txt de una carpeta?

Geo

  • Miembro de PLATA
  • *****
  • Mensajes: 1011
  • Nacionalidad: mx
    • Ver Perfil
    • http://hsblog.mexchip.com
Re: importar VARIOS .txt en MATLAB
« Respuesta #1 en: Martes 19 de Mayo de 2009, 22:14 »
0
Lo más fácil sería que los nombres de archivo fueran algo como nombre_X.txt, donde X es un número consecutivo:

Código: Matlab M
  1. for i = 1 : 100
  2.     % concatenando
  3.     nombre_archivo1 = [ 'nombre_archivo_' num2str( i ) '.txt' ];
  4.  
  5.     % usando sprintf
  6.     % nombre_archivo2 = sprintf( 'nombre_archivo_%d.txt', i );
  7. end
  8.  

De otra forma, usa la función list para obtener todos los archivos que se encuentran en la carpeta, los recorres y vas cargando los que desees :).
Código: Matlab M
  1. % obtiene los archivos que se encuentran en la carpeta
  2. % dir devuelve un vector de estructuras con los siguientes elementos: name, date, bytes, isdir y datenum.
  3. archivos = dir();
  4.  
  5. % muestra la propiedad name
  6. for i = 1 : size( archivos )
  7.     disp( archivos( i ).name );
  8. end
  9.  
La imaginación es el límite.
Hardware & Software | Mexchip

IngAguas

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: importar VARIOS .txt en MATLAB
« Respuesta #2 en: Viernes 12 de Junio de 2009, 12:14 »
0
Aprovechando este tema, a mi me pasa algo parecido. Tengo 42 archivos que necesito importar que no son extension txt (es mas, desconozco su extension  :D ), pues con parte de la informacion que continene necesito armar 42 matrices en 42 archivos diferentes. El procedimiento que hice para solo 1 archivo es:

archivo= input('Archivo de entrada:','s');% ingreso el archivo a leer
fid1= fopen(archivo);
datos= fscanf(fid1,'%f ',[1 inf]);%leo la informacion q contiene
datos(1:2)=[]; %elimino las 2 primeras columnas por q no las necesito
datos(211:1470)=[];% elimino estas columnas porque no las necesito
CAPA1=[datos;datos;datos;datos;datos;datos;datos]; % armo una matriz que es de 7x210 datos, los cuales por fila resultan ser los mismos
CAPA=CAPA1'; %calcula la inversa
B1='MATRIZK';
lista=strcat(B1,'.txt');% creo el nombre del archivo para que grabe en el
D1_1=strcat('C:Documents and SettingsMis documentosMatlab',lista); % le direcciono donde crearlo
fid2=fopen(D1_1,'W') % lo abro para escribir en el
fprintf(fid2,'%0.10f .....%10fn',CAPA);% ingreso la matriz formada
st=fclose(fid1)
st=fclose(fid2)

como veran, asi introduzco solo un archivo a la vez y siempre el archivo de salida es el mismo, porlo q tengo q modificar el nombre cada vez q camibo el archivo, quiero usar un bucle FOR, pero no se como manejarlo, pues he hecho varias pruebas y no logro hacerlo.  ^_^ . Si alguien me da una luz os agradezco un monton!!!!

Gracias por la ayuda!!!  :rolleyes:

Geo

  • Miembro de PLATA
  • *****
  • Mensajes: 1011
  • Nacionalidad: mx
    • Ver Perfil
    • http://hsblog.mexchip.com
Re: importar VARIOS .txt en MATLAB
« Respuesta #3 en: Sábado 13 de Junio de 2009, 05:12 »
0
¿Qué tipo de modificación debes hacerle al nombre del archivo en cada iteración? Si se trata de una numeración consecutiva el ciclo for es lo adecuado, en mi anterir mensaje tienes la solución:
Cita de: "Geo"
Código: Matlab M
  1. for i = 1 : 100
  2.     % concatenando
  3.     nombre_archivo1 = [ 'nombre_archivo_' num2str( i ) '.txt' ];
  4.  
  5.     % usando sprintf
  6.     % nombre_archivo2 = sprintf( 'nombre_archivo_%d.txt', i );
  7. end
  8.  
La imaginación es el límite.
Hardware & Software | Mexchip