Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Importar bloque de datos mixtos desde archivo de texto

En este ejemplo se lee un bloque de texto mixto y datos numéricos de un archivo de texto y, a continuación, se importa el bloque de datos en una tabla o una matriz de celdas.

Información general del archivo de datos

El archivo de muestra contiene líneas comentadas que empiezan por # #.bigfile.txt Los datos se organizan en cinco columnas: La primera columna contiene texto que indica las marcas de tiempo. Las columnas segunda, tercera y cuarta contienen datos numéricos que indican la temperatura, la humedad y la velocidad del viento. La última columna contiene texto descriptivo. Mostrar el contenido del archivo.bigfile.txt

type('bigfile.txt')
## A ID = 02476 ## YKZ Timestamp Temp Humidity Wind Weather 06-Sep-2013 01:00:00 6.6 89 4 clear 06-Sep-2013 05:00:00 5.9 95 1 clear 06-Sep-2013 09:00:00 15.6 51 5 mainly clear 06-Sep-2013 13:00:00 19.6 37 10 mainly clear 06-Sep-2013 17:00:00 22.4 41 9 mostly cloudy 06-Sep-2013 21:00:00 17.3 67 7 mainly clear ## B ID = 02477 ## YVR Timestamp Temp Humidity Wind Weather 09-Sep-2013 01:00:00 15.2 91 8 clear 09-Sep-2013 05:00:00 19.1 94 7 n/a 09-Sep-2013 09:00:00 18.5 94 4 fog 09-Sep-2013 13:00:00 20.1 81 15 mainly clear 09-Sep-2013 17:00:00 20.1 77 17 n/a 09-Sep-2013 18:00:00 20.0 75 17 n/a 09-Sep-2013 21:00:00 16.8 90 25 mainly clear ## C ID = 02478 ## YYZ Timestamp Temp Humidity Wind Weather 

Importar bloque de datos como tabla

Para importar los datos como una tabla, utilítelos con las opciones de importación.readtable

Cree un objeto de opciones de importación para el archivo mediante la función.detectImportOptions Especifique la ubicación de los datos mediante la propiedad.DataLines Por ejemplo, las líneas a través contienen el primer bloque de datos.38 Opcionalmente, puede especificar los nombres de las variables mediante la propiedad.VariableNames Por último, importe el primer bloque de datos con el objeto.readtableopts

opts = detectImportOptions('bigfile.txt');  opts.DataLines = [3 8]; opts.VariableNames = {'Timestamp','Temp',...                       'Humidity','Wind','Weather'}; T_first = readtable('bigfile.txt',opts) 
T_first=6×5 table
         Timestamp          Temp    Humidity    Wind        Weather    
    ____________________    ____    ________    ____    _______________

    06-Sep-2013 01:00:00     6.6       89         4     'clear'        
    06-Sep-2013 05:00:00     5.9       95         1     'clear'        
    06-Sep-2013 09:00:00    15.6       51         5     'mainly clear' 
    06-Sep-2013 13:00:00    19.6       37        10     'mainly clear' 
    06-Sep-2013 17:00:00    22.4       41         9     'mostly cloudy'
    06-Sep-2013 21:00:00    17.3       67         7     'mainly clear' 

Lea el segundo bloque actualizando la propiedad a la ubicación del segundo bloque.DataLines

opts.DataLines = [11 17]; T_second = readtable('bigfile.txt',opts)
T_second=7×5 table
         Timestamp          Temp    Humidity    Wind       Weather    
    ____________________    ____    ________    ____    ______________

    09-Sep-2013 01:00:00    15.2       91         8     'clear'       
    09-Sep-2013 05:00:00    19.1       94         7     'n/a'         
    09-Sep-2013 09:00:00    18.5       94         4     'fog'         
    09-Sep-2013 13:00:00    20.1       81        15     'mainly clear'
    09-Sep-2013 17:00:00    20.1       77        17     'n/a'         
    09-Sep-2013 18:00:00      20       75        17     'n/a'         
    09-Sep-2013 21:00:00    16.8       90        25     'mainly clear'

Importar bloque de datos como matriz de celdas

Puede importar los datos como matriz de celdas utilizando la función con, o mediante la función.readcelldetectImportOptionstextscan Primero importa el bloque de datos usando la función y luego realiza la misma importación usando.readcelltextscan

Para realizar la importación mediante la función readcell, cree un objeto de opciones de importación para el archivo mediante la función.detectImportOptions Especifique la ubicación de los datos mediante la propiedad.DataLines A continuación, peforme la operación de importación utilizando el objeto de opciones de función e importación.readcellopts

opts = detectImportOptions('bigfile.txt');  opts.DataLines = [3 8]; % fist block of data C = readcell('bigfile.txt',opts)
C = 6x5 cell array
  Columns 1 through 4

    {[06-Sep-2013 01:00:00]}    {[ 6.6000]}    {[89]}    {[ 4]}
    {[06-Sep-2013 05:00:00]}    {[ 5.9000]}    {[95]}    {[ 1]}
    {[06-Sep-2013 09:00:00]}    {[15.6000]}    {[51]}    {[ 5]}
    {[06-Sep-2013 13:00:00]}    {[19.6000]}    {[37]}    {[10]}
    {[06-Sep-2013 17:00:00]}    {[22.4000]}    {[41]}    {[ 9]}
    {[06-Sep-2013 21:00:00]}    {[17.3000]}    {[67]}    {[ 7]}

  Column 5

    {'clear'        }
    {'clear'        }
    {'mainly clear' }
    {'mainly clear' }
    {'mostly cloudy'}
    {'mainly clear' }

Para realizar la importación mediante la función, especifique el tamaño del bloque utilizando y el formato de los campos de datos utilizando.textscanN formatSpec Por ejemplo, utilice para variables de texto, para variables de fecha y hora, o para variables categóricas.'%s''%D''%c' Se usa para abrir el archivo.fopen A continuación, la función devuelve un identificador de archivo,.fileID A continuación, lea el archivo mediante la función.textscan

N = 6; formatSpec = '%D %f %f %f %c'; fileID = fopen('bigfile.txt');

Lea el primer bloque y visualice el contenido de la variable.Humidity

C_first = textscan(fileID,formatSpec,N,'CommentStyle','##','Delimiter','\t')
C_first = 1x5 cell array
  Columns 1 through 4

    {6x1 datetime}    {6x1 double}    {6x1 double}    {6x1 double}

  Column 5

    {6x1 char}

C_first{3}
ans = 6×1

    89
   NaN
    95
   NaN
    51
   NaN

Actualice el tamaño de bloque N y lea el segundo bloque. Mostrar el contenido de la quinta variable.Weather

N = 7; C_second = textscan(fileID,formatSpec,N,'CommentStyle','##','Delimiter','\t')
C_second = 1x5 cell array
  Columns 1 through 4

    {7x1 datetime}    {7x1 double}    {7x1 double}    {7x1 double}

  Column 5

    {7x1 char}

C_second{5}
ans = 7x1 char array
    'm'
    '...'
    'm'
    '...'
    'm'
    '...'
    'c'

Cierre el archivo.

fclose(fileID);

Consulte también

| | | |

Temas relacionados