Rellenar un archivo con datos faltantes
Publicado por canijo (6 intervenciones) el 08/08/2011 14:28:51
Hola buenas, estoy empezando con Matlab y tengo el siguiente problema:
Me han pasado un archivo.txt, que me lo cargo y lo leo Matlab. El archivo consta de una columna de fechas y otra de caudales, pero existen lagunas en los fechas y en su correspondiente dato, ya que se salta de un día a otro día que no es el siguiente. Pues bien lo que quiero hacer es crearme un archivo donde en una columna estén todos las fechas y en la otro donde estén los datos correspondientes a esa fecha, y en las fechas que no existan datos poner -1. El código que tengo es el siguiente, pero no me sale correctamente. Por favor pido ayuda. Muchas gracias:
Código:
fich=fopen(Qtxt,'r');
fgets(fich);
datQ = fscanf(fich,'%d/%d/%d %f',[4 Inf]);
fclose(fich);
datQ=datQ';
fechasD = datenum(datQ(:,3),datQ(:,2),datQ(:,1),0,0,0);
datos=[fechasD datQ(:,4)];
fechastotal=fechasD(1):fechasD(end);
fechastotal=fechastotal';
k=0;
for i=1:length(fechasD);
datoscorr(i+k)=datos(i,2);
if (fechastotal(i+k))< (fechasD(i));
k=abs((fechastotal(i+k)-fechasD(i)))-1;
for m=1:abs(fechastotal(i+k)-fechasD(i));
datoscorr(i+k+m)=-1 ;
end
end
end
datoscorr=datoscorr';
Me han pasado un archivo.txt, que me lo cargo y lo leo Matlab. El archivo consta de una columna de fechas y otra de caudales, pero existen lagunas en los fechas y en su correspondiente dato, ya que se salta de un día a otro día que no es el siguiente. Pues bien lo que quiero hacer es crearme un archivo donde en una columna estén todos las fechas y en la otro donde estén los datos correspondientes a esa fecha, y en las fechas que no existan datos poner -1. El código que tengo es el siguiente, pero no me sale correctamente. Por favor pido ayuda. Muchas gracias:
Código:
fich=fopen(Qtxt,'r');
fgets(fich);
datQ = fscanf(fich,'%d/%d/%d %f',[4 Inf]);
fclose(fich);
datQ=datQ';
fechasD = datenum(datQ(:,3),datQ(:,2),datQ(:,1),0,0,0);
datos=[fechasD datQ(:,4)];
fechastotal=fechasD(1):fechasD(end);
fechastotal=fechastotal';
k=0;
for i=1:length(fechasD);
datoscorr(i+k)=datos(i,2);
if (fechastotal(i+k))< (fechasD(i));
k=abs((fechastotal(i+k)-fechasD(i)))-1;
for m=1:abs(fechastotal(i+k)-fechasD(i));
datoscorr(i+k+m)=-1 ;
end
end
end
datoscorr=datoscorr';
Valora esta pregunta


0