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.

textscan

Leer datos formateados de un archivo de texto o cadena

Descripción

ejemplo

C = textscan(fileID,formatSpec) lee los datos de un archivo de texto abierto en un array de celdas, C. El archivo de texto se indica mediante el identificador de archivo, fileID. Utilice fopen para abrir el archivo y obtener el valor de fileID. Cuando termine de leer en un archivo, cierre el archivo llamando a fclose(fileID).

textscan intenta hacer coincidir los datos del archivo con el especificador de conversión de formatSpec. La función textscan vuelve a aplicar formatSpec en todo el archivo y se detiene cuando no puede hacer coincidir formatSpec con los datos.

ejemplo

C = textscan(fileID,formatSpec,N) lee los datos del archivo usando formatSpec N veces, donde N es un entero positivo. Para leer datos adicionales del archivo después de N ciclos, llame de nuevo a textscan utilizando el fileID original. Si reanuda una exploración de texto de un archivo llamando a textscan con el mismo identificador de archivo (fileID), textscan reanuda automáticamente la lectura en el punto donde terminó la última lectura.

ejemplo

C = textscan(chr,formatSpec) lee el texto del vector de caracteres chr en el array de celdas C. Al leer texto de un vector de caracteres, las llamadas repetidas a textscan reinician el análisis desde el principio cada vez. Para reiniciar un análisis desde la última posición, solicite una salida position.

textscan intenta hacer coincidir los datos del vector de caracteres chr con el formato especificado en formatSpec.

C = textscan(chr,formatSpec,N) utiliza formatSpec N veces, donde N es un entero positivo.

ejemplo

C = textscan(___,Name,Value) especifica las opciones utilizando uno o más argumentos de par Name,Value, además de cualquiera de los argumentos de entrada de las sintaxis anteriores.

ejemplo

[C,position] = textscan(___) devuelve la posición en el archivo o el vector de caracteres al final de la exploración como el segundo argumento de salida. Para un archivo, se trata del valor que ftell(fileID) devuelve después de llamar a textscan. Para un vector de caracteres, position indica cuántos caracteres lee textscan.

Ejemplos

contraer todo

Lea un vector de caracteres que contenga números en punto flotante.

chr = '0.41 8.24 3.57 6.24 9.27';
C = textscan(chr,'%f');

El especificador '%f' de formatSpec indica a textscan que haga coincidir cada campo de chr con un número en punto flotante de precisión doble.

Muestre el contenido del array de celdas C.

celldisp(C)
 
C{1} =
 
    0.4100
    8.2400
    3.5700
    6.2400
    9.2700

 

Lea el mismo vector de caracteres y trunque cada valor a un dígito decimal.

C = textscan(chr,'%3.1f %*1d');

El especificador %3.1f indica un ancho de campo de 3 dígitos y una precisión de 1. La función textscan lee un total de 3 dígitos, incluido el punto decimal y el primer dígito después del punto decimal. El especificador, %*1d, indica a textscan que omita el dígito restante.

Muestre el contenido del array de celdas C.

celldisp(C)
 
C{1} =
 
    0.4000
    8.2000
    3.5000
    6.2000
    9.2000

 

Cargue el archivo de datos y lea cada columna con el tipo apropiado.

Cargue el archivo scan1.dat y previsualice su contenido en un editor de texto. A continuación se muestra una captura de pantalla.

 filename = fullfile(matlabroot,'examples','matlab','scan1.dat');

Abra el archivo y lea cada columna con el especificador de conversión apropiado. textscan devuelve un array de celdas de 1-by-9 de C.

fileID = fopen(filename);
C = textscan(fileID,'%s %s %f32 %d8 %u %f %f %s %f');
fclose(fileID);
whos C
  Name      Size            Bytes  Class    Attributes

  C         1x9              2249  cell               

Vea el tipo de datos de MATLAB® de cada una de las celdas de C.

C
C = 1x9 cell array
  Columns 1 through 5

    {3x1 cell}    {3x1 cell}    {3x1 single}    {3x1 int8}    {3x1 uint32}

  Columns 6 through 9

    {3x1 double}    {3x1 double}    {3x1 cell}    {3x1 double}

Examine las entradas individuales. Observe que C{1} y C{2} son arrays de celdas. C{5} es del tipo de datos uint32, por lo tanto, los dos primeros elementos de C{5} son los valores máximos para un entero de 32 bits sin signo, o intmax('uint32').

celldisp(C)
 
C{1}{1} =
 
09/12/2005
 
 
C{1}{2} =
 
10/12/2005
 
 
C{1}{3} =
 
11/12/2005
 
 
C{2}{1} =
 
Level1
 
 
C{2}{2} =
 
Level2
 
 
C{2}{3} =
 
Level3
 
 
C{3} =
 
   12.3400
   23.5400
   34.9000

 
 
C{4} =
 
   45
   60
   12

 
 
C{5} =
 
   4294967295
   4294967295
       200000

 
 
C{6} =
 
   Inf
  -Inf
    10

 
 
C{7} =
 
       NaN
    0.0010
  100.0000

 
 
C{8}{1} =
 
Yes
 
 
C{8}{2} =
 
No
 
 
C{8}{3} =
 
No
 
 
C{9} =
 
   5.1000 + 3.0000i
   2.2000 - 0.5000i
   3.1000 + 0.1000i

 

Elimine el texto literal 'Level' de cada campo de la segunda columna de los datos del ejemplo anterior. A continuación se muestra una vista previa del archivo.

Abra el archivo y realice la coincidencia con el texto literal de la entrada formatSpec.

filename = fullfile(matlabroot,'examples','matlab','scan1.dat');
fileID = fopen(filename);
C = textscan(fileID,'%s Level%d %f32 %d8 %u %f %f %s %f');
fclose(fileID);
C{2}
ans = 3x1 int32 column vector

   1
   2
   3

Vea el tipo de datos de MATLAB® de la segunda celda de C. La segunda celda del array de celdas 1-by-9, C, es ahora del tipo de datos int32.

disp( class(C{2}) )
int32

Lea la primera columna del archivo del ejemplo anterior en un array de celdas, omitiendo el resto de la línea.

filename = fullfile(matlabroot,'examples','matlab','scan1.dat');
fileID = fopen(filename);
dates = textscan(fileID,'%s %*[^\n]');
fclose(fileID);
dates{1}
ans = 3x1 cell array
    {'09/12/2005'}
    {'10/12/2005'}
    {'11/12/2005'}

textscan devuelve un array de celdas de fechas.

Cargue el archivo data.csv y previsualice su contenido en un editor de texto. A continuación se muestra una captura de pantalla. Observe que el archivo contiene datos separados por comas y también contiene valores vacíos.

Lea el archivo, convirtiendo las celdas vacías en -Inf.

filename = fullfile(matlabroot,'examples','matlab','data.csv');
fileID = fopen(filename);
C = textscan(fileID,'%f %f %f %f %u8 %f',...
'Delimiter',',','EmptyValue',-Inf);
fclose(fileID);
column4 = C{4}, column5 = C{5}
column4 = 2×1

     4
  -Inf

column5 = 2x1 uint8 column vector

    0
   11

textscan devuelve un array de celdas 1-by-6, C. La función textscan convierte el valor vacío de C{4} en -Inf, donde C{4} está asociado a un formato de punto flotante. Debido a que MATLAB® representa un entero sin signo -Inf como 0, textscan convierte el valor vacío de C{5} en 0 en lugar de en -Inf.

Cargue el archivo data2.csv y previsualice su contenido en un editor de texto. A continuación se muestra una captura de pantalla. Observe que el archivo contiene datos que se pueden interpretar como comentarios y otras entradas como 'NA' o 'na' que pueden indicar campos vacíos.

filename = fullfile(matlabroot,'examples','matlab','data2.csv');

Designe la entrada que textscan debe tratar como comentarios o valores vacíos y explore los datos de C.

fileID = fopen(filename);
C = textscan(fileID,'%s %n %n %n %n','Delimiter',',',...
'TreatAsEmpty',{'NA','na'},'CommentStyle','//');
fclose(fileID);

Muestre la salida.

celldisp(C)
 
C{1}{1} =
 
abc
 
 
C{1}{2} =
 
def
 
 
C{2} =
 
     2
   NaN

 
 
C{3} =
 
   NaN
     5

 
 
C{4} =
 
     3
     6

 
 
C{5} =
 
     4
     7

 

Cargue el archivo data3.csv y previsualice su contenido en un editor de texto. A continuación se muestra una captura de pantalla. Observe que el archivo contiene delimitadores repetidos.

filename = fullfile(matlabroot,'examples','matlab','data3.csv');

Para tratar las comas repetidas como un solo delimitador, utilice el parámetro MultipleDelimsAsOne y establezca el valor como 1 (true).

fileID = fopen(filename);
C = textscan(fileID,'%f %f %f %f','Delimiter',',',...
'MultipleDelimsAsOne',1);
fclose(fileID);


celldisp(C)
 
C{1} =
 
     1
     5

 
 
C{2} =
 
     2
     6

 
 
C{3} =
 
     3
     7

 
 
C{4} =
 
     4
     8

 

Cargue el archivo de datos grades.txt para este ejemplo y previsualice su contenido en un editor de texto. A continuación se muestra una captura de pantalla. Observe que el archivo contiene delimitadores repetidos.

filename = fullfile(matlabroot,'examples','matlab','grades.txt');

Lea los encabezados de columna utilizando el formato '%s' cuatro veces.

fileID = fopen(filename);
formatSpec = '%s';
N = 4;
C_text = textscan(fileID,formatSpec,N,'Delimiter','|');

Lea los datos numéricos del archivo.

C_data0 = textscan(fileID,'%d %f %f %f')
C_data0 = 1x4 cell array
    {4x1 int32}    {4x1 double}    {4x1 double}    {4x1 double}

El valor predeterminado de CollectOutput es 0 (false), por lo que textscan devuelve cada columna de los datos numéricos en un array separado.

Defina el indicador de posición del archivo al principio del archivo.

frewind(fileID);

Vuelva a leer el archivo y establezca CollectOutput como 1 (verdadero) para recopilar las columnas consecutivas de la misma clase en un único array. Puede utilizar la función repmat para indicar que el especificador de conversión %f debe aparecer tres veces. Esta técnica es útil cuando un formato se repite muchas veces.

C_text = textscan(fileID,'%s',N,'Delimiter','|');
C_data1 = textscan(fileID,['%d',repmat('%f',[1,3])],'CollectOutput',1)
C_data1 = 1x2 cell array
    {4x1 int32}    {4x3 double}

Los resultados de prueba, que son todos dobles, se recopilan en un solo array de 4 por 3.

Cierre el archivo.

fclose(fileID);

Lea la primera y última columna de datos de un archivo de texto. Omita una columna de texto y una columna de datos enteros.

Cargue el archivo names.txt y previsualice su contenido en un editor de texto. A continuación se muestra una captura de pantalla. Observe que el archivo contiene dos columnas de texto entrecomillado, seguidas de una columna de enteros y, finalmente, una columna de números en punto flotante.

filename = fullfile(matlabroot,'examples','matlab','names.txt');

Lea la primera y última columna de datos del archivo. Utilice el especificador de conversión %q para leer el texto encerrado en comillas dobles ("). %*q omite el texto entrecomillado, %*d omite el campo de enteros y %f lee el número en punto flotante. Especifique el delimitador de coma mediante el argumento de par nombre-valor 'Delimiter'.

fileID = fopen(filename,'r');
C = textscan(fileID,'%q %*q %*d %f','Delimiter',',');
fclose(fileID);

Muestre la salida. textscan devuelve un array de celdas C donde se quitan las comillas dobles que rodean el texto.

celldisp(C)
 
C{1}{1} =
 
Smith, J.
 
 
C{1}{2} =
 
Bates, G.
 
 
C{1}{3} =
 
Curie, M.
 
 
C{1}{4} =
 
Murray, G.
 
 
C{1}{5} =
 
Brown, K.
 
 
C{2} =
 
   71.1000
   69.3000
   64.1000
  133.0000
   64.9000

 

Cargue el archivo german_dates.txt y previsualice su contenido en un editor de texto. A continuación se muestra una captura de pantalla. Observe que la primera columna de valores contiene fechas en alemán y las columnas segunda y tercera son valores numéricos.

filename = fullfile(matlabroot,'examples','matlab','german_dates.txt');

Abra el archivo. Especifique el esquema de codificación de caracteres asociado al archivo como la última entrada de fopen.

fileID = fopen(filename,'r','n','ISO-8859-15');

Lea el archivo. Especifique el formato de las fechas del archivo mediante el especificador %{dd % MMMM yyyy}D. Especifique la configuración regional de las fechas mediante el argumento de par nombre-valor DateLocale.

C = textscan(fileID,'%{dd MMMM yyyy}D %f %f',...
    'DateLocale','de_DE','Delimiter',',');
fclose(fileID);

Vea el contenido de la primera celda de C. Las fechas se muestran en el idioma que utiliza MATLAB dependiendo de la configuración regional del sistema.

C{1}
ans = 3x1 datetime array
   01 January 2014 
   01 February 2014
   01 March 2014   

Utilice sprintf para convertir secuencias de escape no predeterminadas en sus datos.

Cree texto que incluya un carácter de salto de impresión, \f. A continuación, para leer el texto mediante textscan, llame a sprintf para convertir explícitamente el salto de impresión.

lyric = sprintf('Blackbird\fsinging\fin\fthe\fdead\fof\fnight');
C = textscan(lyric,'%s','delimiter',sprintf('\f'));
C{1}
ans = 7x1 cell array
    {'Blackbird'}
    {'singing'  }
    {'in'       }
    {'the'      }
    {'dead'     }
    {'of'       }
    {'night'    }

textscan devuelve un array de celdas, C.

Reanude la exploración desde una posición distinta al principio.

Si reanuda una exploración del texto, textscan lee desde el principio cada vez. Para reanudar una exploración desde cualquier otra posición, utilice la sintaxis de argumentos de dos salidas en la llamada inicial a textscan.

Por ejemplo, cree un vector de caracteres denominado lyric. Lea la primera palabra del vector de caracteres y, a continuación, reanude la exploración.

lyric = 'Blackbird singing in the dead of night';
[firstword,pos] = textscan(lyric,'%9c',1);
lastpart = textscan(lyric(pos+1:end),'%s');

Argumentos de entrada

contraer todo

Identificador de archivo de un archivo de texto abierto, especificado como un número. Antes de leer un archivo con textscan, debe utilizar fopen para abrir el archivo y obtener el fileID.

Tipos de datos: double

Formato de los campos de datos, especificado como vector de caracteres o una cadena de uno o más especificadores de conversión. Cuando textscan lee la entrada, intenta hacer coincidir los datos con el formato especificado en formatSpec. Si textscan no puede realizar la coincidencia con un campo de datos, deja de leer y devuelve todos los campos leídos antes del error.

El número de especificadores de conversión determina el número de celdas del array de salida, C.

Campos numéricos

Esta tabla muestra los especificadores de conversión disponibles para las entradas numéricas.

Tipo de entrada numéricaEspecificador de conversiónClase de salida
Entero, con signo%dint32
%d8int8
%d16int16
%d32int32
%d64int64
Entero, sin signo%uuint32
%u8uint8
%u16uint16
%u32uint32
%u64uint64
Número en punto flotante%fdouble
%f32single
%f64double
%ndouble

Campos no numéricos

Esta tabla muestra los especificadores de conversión disponibles para las entradas que incluyen caracteres no numéricos.

Tipo de entrada no numéricoEspecificador de conversiónDetalles
Carácter%cLeer cualquier carácter individual, incluyendo un delimitador.
Array de texto%sLeer como un array de celdas de vectores de caracteres.
%q

Leer como un array de celdas de vectores de caracteres. Si el texto comienza con comillas dobles ("), omita las comillas de apertura y las comillas de cierre correspondientes, que son la segunda instancia de unas comillas dobles sin escape. Reemplace las comillas dobles con escape (por ejemplo, ""abc"") por comillas dobles sin escape ("abc"). %q omite las comillas dobles que aparecen después de la marca de comillas dobles de cierre.

Ejemplo: '%q' lee '"Joe ""Lightning"" Smith, Jr."' como 'Joe "Lightning" Smith, Jr.'.

Fechas y horas%D

Se lee de la misma manera que con %q y, a continuación, se convierte en un valor de fecha/hora.

%{fmt}D

Se lee de la misma manera que con %q y, a continuación, se convierte en un valor de fecha/hora. fmt describe el formato del texto de entrada. La entrada fmt es un vector de caracteres de identificadores de letras que es un valor válido para la propiedad Format de fecha/hora. textscan convierte el texto que no coincide con este formato a valores NaT.

Para obtener más información acerca de los formatos de visualización de fecha/hora, consulte la propiedad Format para arrays de fecha/hora.

Ejemplo: '%{dd-MMM-yyyy}D' especifica el formato de una fecha como '01-Jan-2014'.

Duración%T

Se lee de la misma manera que con %q y, a continuación, se convierte en un valor de duración.

%{fmt}T

Se lee de la misma manera que con %q y, a continuación, se convierte en un valor de duración. fmt describe el formato del texto de entrada. La entrada fmt es un vector de caracteres de identificadores de letras que es un valor válido para la propiedad Format de una duración. textscan convierte el texto que no coincide con este formato en valores NaN.

Para obtener más información sobre los formatos de visualización de la duración, consulte la propiedad format para los arrays de duración.

Ejemplo: '%{hh:mm:ss}T' especifica el formato de una duración como '10:30:15', que representa 10 horas, 30 minutos y 15 segundos.

Categoría%C

Se lee de la misma manera que con %q y, a continuación, se convierte en un nombre de categoría en un array categórico. textscan convierte el texto de <undefined> en un valor no definido en el array categórico de salida.

Coincidencia de patrones%[...]

Leer como un array de celdas vectores de caracteres los caracteres dentro de los corchetes hasta el primer carácter que no coincida. Para incluir ] en el conjunto, especifíquelo primero: %[]...].

Ejemplo: %[mus] lee 'summer ' como 'summ'.

%[^...]

Excluir los caracteres dentro de los corchetes, leyendo hasta el primer carácter coincidente. Para excluir ], especifíquelo primero: %[^]...].

Ejemplo: %[^xrg] lee 'summer ' como 'summe'.

Operadores opcionales

Los especificadores de conversión de formatSpec pueden incluir operadores opcionales, que aparecen en el orden siguiente (se incluyen espacios para mayor claridad):

Los operadores opcionales incluyen:

  • Campos y caracteres que ignorar

    textscan lee todos los caracteres del archivo en secuencia, a menos que se le indique que ignore un campo concreto o una parte de un campo.

    Inserte un carácter de asterisco (*) después del carácter de porcentaje (%) para omitir un campo o una parte de un campo de caracteres.

    Operador

    Acción realizada

    %*k

    Omitir el campo. k es cualquier especificador de conversión que identifique el campo que se va a omitir. textscan no crea una celda de salida para ninguno de estos campos.

    Ejemplo: '%s %*s %s %s %*s %*s %s' (los espacios son opcionales) convierte el texto
    'Blackbird singing in the dead of night' en cuatro celdas de salida con
    'Blackbird' 'in' 'the' 'night'

    '%*ns'

    Se omiten hasta n caracteres, donde n es un entero inferior o igual al número de caracteres del campo.

    Ejemplo: '%*3s %s' convierte 'abcdefg' en 'defg'. Cuando el delimitador es una coma, el mismo delimitador convierte 'abcde,fghijkl' en un array de celdas que contiene 'de';'ijkl'.

    '%*nc'

    Se omiten n caracteres, incluidos los caracteres delimitadores.

  • Ancho de campo

    textscan lee el número de caracteres o dígitos especificado por el ancho o la precisión del campo, o hasta el primer delimitador, lo que ocurra primero. El punto decimal, los signos (+ o -), el carácter de exponente y los dígitos del exponente numérico se contabilizan como caracteres y dígitos dentro del ancho del campo. Para los números complejos, el ancho de campo se refiere a los anchos individuales de la parte real y de la parte imaginaria. Para la parte imaginaria, el ancho de campo incluye + o − pero no i o j. Especifique el ancho de campo insertando un número después del carácter de porcentaje (%) en el especificador de conversión.

    Ejemplo: %5f lee '123.456' como 123.4.

    Ejemplo: %5c lee 'abcdefg' como 'abcde'.

    Cuando se utiliza el operador de ancho de campo con caracteres únicos (%c), textscan también lee los caracteres de delimitador, espacio en blanco y fin de línea.
    Ejemplo: %7c lee 7 caracteres, incluido el espacio en blanco, por lo que 'Day and night' se lee como 'Day and'.

  • Precisión

    Para los números en punto flotante (%n, %f, %f32, %f64), puede especificar el número de dígitos decimales que se leerán.

    Ejemplo: %7.2f lee '123.456' como 123.45.

  • Texto literal que ignorar

    textscan omite el texto anexado al especificador de conversión formatSpec.

    Ejemplo: Level%u8 lee 'Level1' como 1.

    Ejemplo: %u8Step lee '2Step' como 2.

Tipos de datos: char | string

Número de veces que se aplica formatSpec, especificado como un entero positivo.

Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Texto de entrada que leer.

Tipos de datos: char | string

Argumentos de par nombre-valor

Ejemplo: C = textscan(fileID,formatSpec,'HeaderLines',3,'Delimiter',',') omite las tres primeras líneas de los datos y, a continuación, lee los datos restantes, tratando las comas como delimitador.

En los nombres no se distingue entre mayúsculas y minúsculas.

Indicador lógico que determina la concatenación de datos, especificado como un par separado por comas consistente en 'CollectOutput' y true o false. Si es true, la función de importación concatena las celdas de salida consecutivas de la misma clase fundamental de MATLAB® en una único array.

Símbolos que designan el texto que se debe ignorar, especificado como un par separado por comas que consta de 'CommentStyle' y un vector de caracteres, un array de celdas de vectores de caracteres, una cadena o un array de cadenas.

Por ejemplo, especifique un carácter como '%' para omitir el texto que sigue al símbolo en la misma línea. Especifique un array de celdas de dos vectores de caracteres, como {'/*','*/'}, para omitir cualquier texto entre esas secuencias.

MATLAB comprueba los comentarios solo al principio de cada campo, no dentro de un campo.

Ejemplo: 'CommentStyle',{'/*','*/'}

Tipos de datos: char | string

Configuración regional para leer las fechas, especificada como un par separado por comas consistente en 'DateLocale' y un vector de caracteres con la forma xx_YY, donde xx es un código ISO 639-1 de dos letras en minúsculas que especifica un idioma, y YY es un código ISO 3166-1 de dos letras en mayúsculas que especifica un país. Para obtener una lista de valores comunes para la configuración regional, consulte el argumento de par nombre-valor Locale para la función datetime.

Utilice DateLocale para especificar la configuración regional en la que textscan debe interpretar los nombres y abreviaturas del mes y del día de la semana al leer el texto como fecha mediante el especificador de formato %D.

Ejemplo: 'DateLocale','ja_JP'

Caracteres delimitadores de campo, especificados como pares separados por comas que consisten en 'Delimiter' y un vector de caracteres o un array de celdas de vectores de caracteres. Especifique varios delimitadores en un array de celdas de vectores de caracteres.

Ejemplo: 'Delimiter',{';','*'}

textscan interpreta los caracteres delimitadores repetidos como delimitadores separados y devuelve un valor vacío en la celda de salida.

Dentro de cada fila de datos, el delimitador de campo predeterminado es el espacio en blanco. El espacio en blanco puede ser cualquier combinación de los caracteres de espacio (' '), retroceso ('\b') o tabulador ('\t'). Si no especifica un delimitador, entonces:

  • Los caracteres delimitadores son los mismos que los caracteres de espacio en blanco. Los caracteres de espacio en blanco predeterminados son ' ', '\b' y '\t'. Utilice el argumento de par nombre-valor 'Whitespace' para especificar caracteres alternativos de espacio en blanco.

  • textscan interpreta los caracteres repetidos de espacio en blanco como un solo delimitador.

Cuando se especifica una de las secuencias de escape siguientes como delimitador, textscan convierte esa secuencia en el carácter de control correspondiente:

\bRetroceso
\nLínea nueva
\rRetorno de carro
\tTabulador
\\Barra invertida (\)

Tipos de datos: char | string

Valor devuelto para campos numéricos vacíos en archivos de texto delimitados, especificado como un par separado por comas que consiste en 'EmptyValue' y un escalar.

Caracteres de fin de línea, especificados como pares separados por comas que consisten en 'EndOfLine' y un vector o cadena de caracteres. El vector de caracteres debe ser '\r\n' o debe especificar un carácter único. Los caracteres comunes de fin de línea son un carácter de nueva línea ('\n') o un retorno de carro ('\r'). Si especifica '\r\n', la función de importación trata \r, \n y la combinación de los dos (\r\n) como caracteres de fin de línea.

La secuencia de fin de línea predeterminada es \n, \r o \r\n, dependiendo del contenido del archivo.

Si hay valores que faltan y una secuencia de fin de línea al final de la última línea de un archivo, la función de importación devuelve valores vacíos para esos campos. Esto garantiza que las celdas individuales del array de celdas de salida, C, tengan el mismo tamaño.

Ejemplo: 'EndOfLine',':'

Tipos de datos: char | string

Caracteres de exponente, especificados como un par separado por comas que consiste en 'ExpChars' y un vector o cadena de caracteres. Los caracteres de exponente predeterminados son e, E, d y D.

Tipos de datos: char | string

Número de líneas de encabezado, especificado como un par separado por comas que consiste en 'HeaderLines' y un entero positivo. textscan omite las líneas de encabezado, incluido el resto de la línea actual.

Gestión de varios delimitadores, especificada como un par separado por comas consistente en 'MultipleDelimsAsOne' y true o false. Si es true, la función de importación trata los delimitadores consecutivos como un único delimitador. Los delimitadores repetidos separados por un espacio en blanco también se tratan como un solo delimitador. También debe especificar la opción Delimiter.

Ejemplo: 'MultipleDelimsAsOne',1

Comportamiento cuando textscan no se puede leer o convertir, especificado como un par separado por comas que consta de 'ReturnOnError' y true o false. Si es true, textscan termina sin un error y devuelve todos los campos leídos. Si es false, textscan termina con un error y no devuelve un array de celdas de salida.

Texto de marcador de posición que se debe tratar como valor vacío, especificado como un par separado por comas consistente en 'TreatAsEmpty' y un vector de caracteres, un array de celdas de vectores de caracteres, una cadena o un array de cadenas. Esta opción solo se aplica a los campos numéricos.

Tipos de datos: char | string

Caracteres de espacio en blanco, especificados como un par separado por comas que consiste en 'Whitespace' y un vector o cadena de caracteres que contiene uno o más caracteres. textscan agrega un carácter de espacio, char(32), a cualquier Whitespace especificado, a menos que Whitespace esté vacío ('') y formatSpec incluya cualquier especificador de conversión.

Cuando se especifica una de las secuencias de escape siguientes como cualquier carácter de espacio en blanco, textscan convierte esa secuencia en el carácter de control correspondiente:

\bRetroceso
\nLínea nueva
\rRetorno de carro
\tTabulador
\\Barra invertida (\)

Tipos de datos: char | string

Tipo de datos de salida de texto, especificado como un par separado por comas consistente en 'TextType' y 'char' o 'string'. Si especifica el valor 'char', textscan devuelve el texto como un array de celdas de vectores de caracteres. Si especifica el valor 'string', textscan devuelve el texto como un array de tipo string.

Argumentos de salida

contraer todo

Datos de texto o archivo, devueltos como un array de celdas.

Para cada especificador de conversión numérico de formatSpec, la función textscan devuelve un vector numérico de K por 1 de MATLAB al array de celdas de salida, C, donde K es el número de veces que textscan encuentra un campo que coincide con el especificador.

Para cada especificador de conversión de texto (%s, %q o %[...]) de formatSpec, la función textscan devuelve un array de celdas de K por 1 de vectores de caracteres, donde K es el número de veces que textscan encuentra un campo que coincide con el especificador. Para cada conversión de caracteres que incluya un operador de ancho de campo, textscan devuelve un array de caracteres de K por M, donde M es el ancho del campo.

Para cada especificador de conversión de fecha/hora o categórico de formatSpec, la función textscan devuelve un vector de fecha/hora o categórico de K por 1 al array de celdas de salida, C, donde K es el número de veces que textscan encuentra un campo que coincide con el especificador.

Posición al final de la exploración, en el archivo o en el vector de caracteres, devuelta como un entero de la clase double. Para un archivo, ftell(fileID) devolverá el mismo valor después de llamar a textscan. Para un vector de caracteres, position indica cuántos caracteres lee textscan.

Algoritmos

textscan convierte los campos numéricos en el tipo de salida especificado de acuerdo con las reglas de MATLAB con respecto al desbordamiento, el truncamiento y el uso de NaN, Inf y -Inf. Por ejemplo, MATLAB representa un entero NaN como cero. Si textscan encuentra un campo vacío asociado a un especificador de formato de tipo entero (como %d o %u), devuelve el valor vacío como cero y no NaN.

Al realizar la coincidencia de datos con un especificador de conversión de texto, textscan lee hasta que encuentra un delimitador o un carácter de fin de línea. Al realizar la coincidencia de datos con un especificador de conversión numérico, textscan lee hasta que encuentra un carácter no numérico. Cuando textscan ya no puede hacer coincidir los datos con un especificador de conversión concreto, intenta hacer coincidir los datos con el especificador de conversión siguiente en formatSpec. El signo (+ o -), los caracteres de exponente y los puntos decimales se consideran caracteres numéricos.

SignoDígitosPunto decimalDígitosCarácter de exponenteSignoDígitos
Leer un carácter de signo si existe.Leer uno o más dígitos.Leer un punto decimal si existe.Si hay un punto decimal, leer uno o más dígitos que inmediatamente lo siguen.Leer un carácter de exponente si existe.Si hay un carácter de exponente, leer un carácter de signo.Si hay un carácter de exponente, leer uno o más dígitos que lo siguen.

textscan importa cualquier número complejo en su conjunto a un campo numérico complejo, convirtiendo las partes reales e imaginarias al tipo numérico especificado (como %d o %f). Las formas válidas para un número complejo son:

±<real>±<imag>i|j

Ejemplo: 5.7-3.1i

±<imag>i|j

Ejemplo: -7j

No incluya un espacio en blanco incrustado en un número complejo. textscan interpreta el espacio en blanco incrustado como delimitador de campo.

Introducido antes de R2006a