Dir
Publicado por Ezequiel (1 intervención) el 25/03/2013 20:56:50
Hola! soy nuevo en este foro. Estoy haciendo un curso de Matlab en mi facultad (Exactas-UBA) y tengo varias dudas para abrir un archivo y con el comando dir.
Tengo una serie de datos de radiosondeos (globos sonda que se lanzan a la atmósfera y envían datos de distintos niveles) en formato TXT. Son varias filas y columnas de datos, ya que por cada nivel analizado (filas) hay diferentes variables (columnas), tales como temperatura, humedad, viento etc.
Con el siguiente comando lo que hago es leer uno de los archivos.
clear all
close all
file = 'sounding_2006071112.txt';
fid = fopen(file,'r');
if fid>0 %si el archivo esta OK, hace todo, sino asigna un NaN
for i=1:7
tmp = fgetl(fid);
end
verif = 1;
j=1;
while ~isempty(verif)
datos{j,1}=fscanf(fid,'%8c',1);
datos{j,2}=fscanf(fid,'%7c',1);
datos{j,3}=fscanf(fid,'%7c',1);
datos{j,4}=fscanf(fid,'%7c',1);
datos{j,5}=fscanf(fid,'%7c',1);
datos{j,6}=fscanf(fid,'%7c',1);
datos{j,7}=fscanf(fid,'%7c',1);
datos{j,8}=fscanf(fid,'%7c',1);
datos{j,9}=fscanf(fid,'%7c',1);
datos{j,10}=fscanf(fid,'%7c\t',1);
datos{j,11}=fscanf(fid,'%6c',1);
verif = str2num(datos{j,1});
j=j+1;
end
end
El primer problema acá es que me aparece una fila al final de la matriz correspondiente a caracteres que está por debajo de los datos que me interesan. Por algún motivo matlab lo esta tomando. Puedo sacarlo, en este caso particular, pero el tema es como hacer para que lo haga en otros archivos siendo que esa fila que no quiero que aparezca, puede aparecer en diferentes ubicaciones, ya que en los otros archivos la cantidad de filas varia, y se me complica la generalización.
Segundo problema, no funciona el comando dir, que lo quiero para buscar todos los archivos que tengo almacenados dentro de una carpeta.
Probe esto:
for i=1:20
d=dir('MATLAB\Practica especial\sondeos_indices')
archivo=d(i).name
fid = fopen(archivo,'r'); %(este comando me dijeron que lo ponga aca pero no entiendo bien para que, que es lo que hace)
end
Ese "end" habría que ponerlo al final de todo el código no?, de todos modos primero quería ver que funcionara, pero no... me salta error.
Muchas gracias!!
Tengo una serie de datos de radiosondeos (globos sonda que se lanzan a la atmósfera y envían datos de distintos niveles) en formato TXT. Son varias filas y columnas de datos, ya que por cada nivel analizado (filas) hay diferentes variables (columnas), tales como temperatura, humedad, viento etc.
Con el siguiente comando lo que hago es leer uno de los archivos.
clear all
close all
file = 'sounding_2006071112.txt';
fid = fopen(file,'r');
if fid>0 %si el archivo esta OK, hace todo, sino asigna un NaN
for i=1:7
tmp = fgetl(fid);
end
verif = 1;
j=1;
while ~isempty(verif)
datos{j,1}=fscanf(fid,'%8c',1);
datos{j,2}=fscanf(fid,'%7c',1);
datos{j,3}=fscanf(fid,'%7c',1);
datos{j,4}=fscanf(fid,'%7c',1);
datos{j,5}=fscanf(fid,'%7c',1);
datos{j,6}=fscanf(fid,'%7c',1);
datos{j,7}=fscanf(fid,'%7c',1);
datos{j,8}=fscanf(fid,'%7c',1);
datos{j,9}=fscanf(fid,'%7c',1);
datos{j,10}=fscanf(fid,'%7c\t',1);
datos{j,11}=fscanf(fid,'%6c',1);
verif = str2num(datos{j,1});
j=j+1;
end
end
El primer problema acá es que me aparece una fila al final de la matriz correspondiente a caracteres que está por debajo de los datos que me interesan. Por algún motivo matlab lo esta tomando. Puedo sacarlo, en este caso particular, pero el tema es como hacer para que lo haga en otros archivos siendo que esa fila que no quiero que aparezca, puede aparecer en diferentes ubicaciones, ya que en los otros archivos la cantidad de filas varia, y se me complica la generalización.
Segundo problema, no funciona el comando dir, que lo quiero para buscar todos los archivos que tengo almacenados dentro de una carpeta.
Probe esto:
for i=1:20
d=dir('MATLAB\Practica especial\sondeos_indices')
archivo=d(i).name
fid = fopen(archivo,'r'); %(este comando me dijeron que lo ponga aca pero no entiendo bien para que, que es lo que hace)
end
Ese "end" habría que ponerlo al final de todo el código no?, de todos modos primero quería ver que funcionara, pero no... me salta error.
Muchas gracias!!
Valora esta pregunta
0