Tengo algunos datos que el formato de la siguiente manera:

dtau     E_av        variance    N_sims      Time
0.001   0.497951    0.000211625 25      Sun Apr  3 18:18:12 2011

dtau     E_av        variance    N_sims      Time
0.002   0.506784    0.000173414 25      Sun Apr  3 18:18:58 2011

Ahora quiero leer las primeras 4 columnas (nada pero el tiempo) de cada tercera línea en MATLAB utilizando textscan; después de usar fid = fopen('data.text'), básicamente, tienen a este bucle:

results = textscan(fid, '%f %f %f %f', 1,'headerlines',1);

Alguna idea?
Saludos!

InformationsquelleAutor trolle3000 | 2011-04-03

2 Comentarios

  1. 2
    fid = fopen('data.text')
    while ~feof(fid)
      results = textscan(fid, '%f %f %f %f', 1,'headerlines',1);
      //Processing...
    
      for i = 1:2
        fgets(fid)
      end
    end

    fgets lee hasta el final de una línea, y devuelve el texto de la línea. Así, sólo tiene que llamar dos veces para saltar dos líneas (descartando el valor de retorno de la función).

    • Su implementación puede romper aún, dependiendo del número de líneas en el archivo. Gracias
  2. 0

    Puesto que usted sabe que va a tener 5 etiquetas de la columna (es decir, cadenas), seguido por 4 valores numéricos seguidos por 5 cadenas (por ejemplo,'Sun', 'Apr', '3', '18:18:12', y '2011'), usted puede leer todos tus datos numéricos en un solo N-por-4 matriz con una llamada a TEXTSCAN:

    fid = fopen('data.text','r');                    %# Open the file
    results = textscan(fid,[repmat(' %*s',1,5) ...   %# Read 5 strings, ignoring them
                            '%f %f %f %f' ...        %# Read 4 numeric values
                            repmat(' %*s',1,5)],...  %# Read 5 strings, ignoring them
                       'Whitespace',' \b\t\n\r',...  %# Add \n and \r as whitespace
                       'CollectOutput',true);        %# Collect numeric values
    fclose(fid);                                     %# Close the file
    results = results{1};                            %# Remove contents of cell array

Dejar respuesta

Please enter your comment!
Please enter your name here