textscan

Считайте отформатированные данные из текстового файла или строки

Описание

пример

C = textscan(fileID,formatSpec) считывает данные из открытого текстового файла в массив ячеек, C. Текстовый файл обозначается идентификатором файла, fileID. Используйте fopen открыть файл и получить fileID значение. Когда вы закончили читать из файла, закрываете файл путем вызова fclose(fileID).

textscan попытки совпадать с данными в файле к спецификатору преобразования в formatSpec. textscan функция повторно применяет formatSpec в целом файле и остановках, когда это не может совпадать с formatSpec к данным.

пример

C = textscan(fileID,formatSpec,N) данные о файле чтений с помощью formatSpec N времена, где N положительное целое число. Считывать дополнительные данные из файла после N циклы, вызовите textscan снова с помощью исходного fileID. Если вы возобновляете текстовое сканирование файла путем вызова textscan с тем же идентификатором файла (fileID), затем textscan автоматически резюме, читающие в точке, где это отключило последнее чтение.

пример

C = textscan(chr,formatSpec) читает текст из вектора символов chr в массив ячеек C. При чтении текста из вектора символов, повторенных вызовов textscan перезапустите сканирование с начала каждый раз. Чтобы перезапустить сканирование от последней позиции, запросите position вывод .

textscan попытки совпадать с данными в векторе символов chr к формату, заданному в formatSpec.

C = textscan(chr,formatSpec,N) использует formatSpec N времена, где N положительное целое число.

пример

C = textscan(___,Name,Value) задает опции с помощью одного или нескольких Name,Value парные аргументы, в дополнение к любому из входных параметров в предыдущих синтаксисах.

пример

[C,position] = textscan(___) возвращает положение в файле или векторе символов в конце сканирования как второй выходной аргумент. Для файла это - значение что ftell(fileID) возвратился бы после вызова textscan. Для вектора символов, position указывает сколько символов textscan чтение.

Примеры

свернуть все

Считайте вектор символов, содержащий числа с плавающей запятой.

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

Спецификатор '%f' в formatSpec говорит textscan совпадать с каждым полем в chr к числу с плавающей запятой с двойной точностью.

Отобразите содержимое массива ячеек C.

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

 

Считайте тот же вектор символов и обрежьте каждое значение до одной десятичной цифры.

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

Спецификатор %3.1f указывает на ширину поля 3 цифр и точность 1. textscan функционируйте читает в общей сложности 3 цифры, включая десятичную точку и 1 цифру после десятичной точки. Спецификатор, %*1d, говорит textscan пропускать остающуюся цифру.

Отобразите содержимое массива ячеек C.

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

 

Загрузите файл данных и считайте каждый столбец с соответствующим типом.

Файл загрузки scan1.dat и предварительный просмотр его содержимое в текстовом редакторе. Снимок экрана показывают ниже.

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

Откройте файл и считайте каждый столбец с соответствующим спецификатором преобразования. textscan возвращает 1-by-9 массив ячеек 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               

Просмотрите тип данных MATLAB® каждой из ячеек в C.

C
C=1×9 cell
  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}

Исследуйте отдельные записи. Заметьте тот C{1} и C{2} массивы ячеек. C{5} имеет тип данных uint32, так первые два элемента C{5} максимальные значения для 32- битное беззнаковое целое или 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

 

Удалите буквенный текст 'Level' от каждого поля во втором столбце данных из предыдущего примера. Предварительный просмотр файла показывают ниже.

Откройте файл и совпадайте с буквенным текстом во входе 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

Просмотрите тип данных MATLAB® второй ячейки в C. Вторая ячейка 1-by-9 массив ячеек, C, имеет теперь тип данных int32.

disp( class(C{2}) )
int32

Считайте первый столбец файла в предыдущем примере в массив ячеек, пропустив остальную часть линии.

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 возвращает массив ячеек даты.

Загрузите файл data.csv и предварительный просмотр его содержимое в текстовом редакторе. Снимок экрана показывают ниже. Заметьте, что файл содержит данные, разделенные запятыми, и также содержит пустые значения.

Считайте файл, преобразовав пустые ячейки в -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 возвращает 1-by-6 массив ячеек, C. textscan функция преобразует пустое значение в C{4} к -Inf, где C{4} сопоставлен с форматом с плавающей точкой. Поскольку MATLAB® представляет беззнаковое целое -Inf как 0textscan преобразует пустое значение в C{5} к 0, и не -Inf.

Загрузите файл data2.csv и предварительный просмотр его содержимое в текстовом редакторе. Снимок экрана показывают ниже. Заметьте, что файл содержит данные, которые могут быть интерпретированы как комментарии и другие записи, такие как 'NA' или 'na' это может указать на пустые поля.

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

Определяйте вход что textscan должен обработать как комментарии или пустые значения и отсканировать данные в C.

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

Отобразите вывод.

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

 

Загрузите файл data3.csv и предварительный просмотр его содержимое в текстовом редакторе. Снимок экрана показывают ниже. Заметьте, что файл содержит повторенные разделители.

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

Чтобы обработать повторные запятые как один разделитель, используйте MultipleDelimsAsOne параметр, и установленный значение к 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

 

Загрузите файл данных grades.txt для этого примера и предварительного просмотра его содержимое в текстовом редакторе. Снимок экрана показывают ниже. Заметьте, что файл содержит повторенные разделители.

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

Считайте заголовки столбцов с помощью формата '%s' четыре раза.

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

Считайте числовые данные в файле.

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

Значение по умолчанию для CollectOutput 0 ложь), таким образом, textscan возвращает каждый столбец числовых данных в отдельном массиве.

Установите индикатор позиции в файле на начало файла.

frewind(fileID);

Перечитайте файл и установите CollectOutput на 1 (TRUE) собирать последовательные столбцы того же класса в единый массив. Можно использовать repmat функция, чтобы указать, что %f спецификатор преобразования должен появиться три раза. Этот метод полезен, когда формат много раз повторяется.

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

Экзаменационные отметки, которые являются все двойными, собраны в сингл 4 3 массив.

Закройте файл.

fclose(fileID);

Считайте первые и последние столбцы данных из текстового файла. Пропустите столбец текста и столбец целочисленных данных.

Загрузите файл names.txt и предварительный просмотр его содержимое в текстовом редакторе. Снимок экрана показывают ниже. Заметьте, что файл содержит два столбца заключенного в кавычки текста, сопровождаемого столбцом целых чисел, и наконец столбцом чисел с плавающей точкой.

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

Считайте первые и последние столбцы данных в файле. Используйте спецификатор преобразования, %q считать текст, заключенный двойными кавычками ("Q пропускает заключенный в кавычки текст, %*d пропускает целочисленное поле и %f читает число с плавающей запятой. Задайте разделитель запятой с помощью 'Delimiter' аргумент пары "имя-значение".

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

Отобразите вывод. textscan возвращает массив ячеек C куда двойные кавычки, заключающие текст, удалены.

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

 

Загрузите файл german_dates.txt и предварительный просмотр его содержимое в текстовом редакторе. Снимок экрана показывают ниже. Заметьте, что первый столбец значений содержит даты на немецком языке, и вторые и третьи столбцы являются числовыми значениями.

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

Откройте файл. Задайте схему кодировки символов, сопоставленную с файлом как последний вход к fopen.

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

Считайте файл. Задайте формат дат в файле с помощью %{dd % MMMM yyyy}D спецификатор. Задайте локаль дат с помощью DateLocale аргумент пары "имя-значение".

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

Просмотрите содержимое первой ячейки в C. Даты отображают на языке использование MATLAB в зависимости от вашей системной локали.

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

Используйте sprintf преобразовывать escape-последовательности не по умолчанию в ваших данных.

Создайте текст, который включает символ перевода страницы, \f. Затем чтобы считать текст с помощью textscan, вызовите sprintf явным образом преобразовывать перевод формата.

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 возвращает массив ячеек, C.

Продолжите сканировать от положения кроме начала.

Если вы возобновляете сканирование текста, textscan чтения с начала каждый раз. Чтобы возобновить сканирование от любого другого положения, используйте синтаксис 2D выходного аргумента в своем начальном вызове textscan.

Например, создайте вектор символов под названием lyric. Считайте первое слово вектора символов, и затем возобновите сканирование.

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

Входные параметры

свернуть все

Идентификатор файла открытого текстового файла, заданного как номер. Прежде, чем считать файл с textscan, необходимо использовать fopen открыть файл и получить fileID.

Типы данных: double

Формат полей данных, заданных как вектор символов или строка одного или нескольких спецификаторов преобразования. Когда textscan читает вход, он пытается совпадать с данными к формату, заданному в formatSpec. Если textscan сбои, чтобы совпадать с полем данных, это прекращает читать и возвращает все полевое чтение перед отказом.

Количество спецификаторов преобразования определяет количество ячеек в выходном массиве, C.

Numeric Fields

Эта таблица приводит доступные спецификаторы преобразования для числовых входных параметров.

Числовой входной типСпецификатор преобразованияВыходной класс
Целое число, подписанное%dint32
%d8int8
%d16int16
%d32int32
%d64int64
Целое число, без знака%uuint32
%u8uint8
%u16uint16
%u32uint32
%u64uint64
Число с плавающей запятой%fdouble
%f32single
%f64double
%ndouble

Nonnumeric Fields

Эта таблица приводит доступные спецификаторы преобразования для входных параметров, которые включают нечисловые символы.

Нечисловой входной типСпецификатор преобразованияДетали
Символ%cСчитайте любой отдельный символ, включая разделитель.
Текстовый массив%sЧитайте как массив ячеек из символьных векторов.
%q

Читайте как массив ячеек из символьных векторов. Если текст начинается с двойной кавычки ("), не используйте ведущую кавычку и ее метку закрытия сопровождения, которая является вторым экземпляром одинокой двойной кавычки. Замените оставленные двойные кавычки (например, ""abc"") с одинокими двойными кавычками ("abc"Q игнорирует любые двойные кавычки, которые появляются после заключительной двойной кавычки.

Пример: '%q' чтения '"Joe ""Lightning"" Smith, Jr."' как 'Joe "Lightning" Smith, Jr.'.

Даты и время%D

Считайте тот же путь как %q выше, и затем преобразуют в значение datetime.

fmt D

Считайте тот же путь как %q выше, и затем преобразуют его в значение datetime. fmt описывает формат входного текста. fmt вход является вектором символов идентификаторов буквы, который является допустимым значением для Format свойство datetime. textscan преобразует текст, который не совпадает с этим форматом к NaT значения.

Для получения дополнительной информации о форматах отображения datetime, смотрите Format свойство для массивов datetime.

Пример: '%{dd-MMM-yyyy}D' задает формат даты, такой как '01-Jan-2014' .

Длительность%T

Считайте тот же путь как %q выше, и затем преобразуют в значение длительности.

fmt T

Считайте тот же путь как %q выше, и затем преобразуют его в значение длительности. fmt описывает формат входного текста. fmt вход является вектором символов идентификаторов буквы, который является допустимым значением для Format свойство длительности. textscan преобразует текст, который не совпадает с этим форматом к NaN значения.

Для получения дополнительной информации о форматах отображения длительности, смотрите format свойство для массивов длительности.

Пример: '%{hh:mm:ss}T' задает формат длительности, такой как '10:30:15', который представляет 10 часов, 30 минут и 15 секунд.

Категория%C

Считайте тот же путь как %q, и затем преобразуйте в название категории в категориальном массиве. textscan преобразует <undefined> текст к неопределенному значению в выходном категориальном массиве.

Сопоставление с образцом%[...]

Читайте как массив ячеек из символьных векторов, символы в скобках до первого символа несоответствия. Включать ] в наборе задайте его сначала: %[]...].

Пример: %[mus] чтения 'summer ' как 'summ'.

%[^...]

Исключите символы в скобках, читая до первого символа соответствия. Исключить ], задайте его сначала: %[^]...].

Пример: %[^xrg] чтения 'summer ' как 'summe'.

Optional Operators

Спецификаторы преобразования в formatSpec может включать дополнительные операторы, которые появляются в следующем порядке (включает пробелы для ясности):

Дополнительные операторы включают:

  • Поля и символы, чтобы проигнорировать

    textscan чтения все символы в вашем файле в последовательности, если вы не говорите ему игнорировать конкретное поле или фрагмент поля.

    Вставьте символ звездочки (*) после символа процента (%), чтобы пропустить поле или фрагмент символьного поля.

    Оператор

    Меры приняты

    K

    Пропустите поле. k любой спецификатор преобразования, идентифицирующий поле, чтобы пропустить. textscan не создает выходную ячейку ни для каких подобных полей.

    Пример: '%s %*s %s %s %*s %*s %s' (пробелы являются дополнительными), преобразует текст
    'Blackbird singing in the dead of night' в четыре выходных ячейки с
    'Blackbird' 'in' 'the' 'night'

    Ns

    Пропустите до n символы, где n целое число, меньше чем или равное количеству символов в поле.

    Пример: '%*3s %s' преобразует 'abcdefg' к 'defg'. Когда разделитель является запятой, тот же разделитель преобразует 'abcde,fghijkl' к массиву ячеек, содержащему 'de';'ijkl'.

    Nc

    Пропустите n символы, включая символы-разделители.

  • Ширина поля

    textscan читает количество символов или цифр, заданных шириной поля или точностью, или до первого разделителя, какой бы ни на первом месте. Десятичная точка, знак (+ или -), символ экспоненты и цифры в числовой экспоненте считаются как символы и цифры в ширине поля. Для комплексных чисел ширина поля относится к отдельным ширинам действительной части и мнимой части. Для мнимой части ширина поля включает + или −, но не i или j. Задайте ширину поля путем вставки номера после символа процента (%) в спецификаторе преобразования.

    Пример: %5f чтения '123.456' как 123.4.

    Пример: %5c чтения 'abcdefg' как 'abcde'.

    Когда оператор ширины поля используется с отдельными символами (%ctextscan также разделитель чтений, пробел и символы конца линии.
    Пример: %7c чтения 7 символов, включая пробел, so'Day and night' чтения как 'Day and'.

  • Точность

    Для чисел с плавающей запятой (%nF, %f32, %f64), можно задать количество десятичных цифр, чтобы читать.

    Пример: %7.2f чтения '123.456' как 123.45.

  • Буквенный текст, чтобы проигнорировать

    textscan игнорирует текст, добавленный к formatSpec спецификатор преобразования.

    Пример: Level%u8 чтения 'Level1' как 1.

    Пример: %u8Step чтения '2Step' как 2.

Типы данных: char | string

Число раз, чтобы применить formatSpec, заданный как положительное целое число.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Введите текст, чтобы читать.

Типы данных: char | string

Аргументы в виде пар имя-значение

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: C = textscan(fileID,formatSpec,'HeaderLines',3,'Delimiter',',') пропускает первые три линии данных, и затем считывает остающиеся данные, обрабатывая запятые как разделитель.

Имена не являются чувствительными к регистру.

Логический индикатор, определяющий конкатенацию данных, заданную как разделенная запятой пара, состоящая из 'CollectOutput' и любой true или false. Если true, затем функция импорта конкатенирует последовательные выходные ячейки того же основного класса MATLAB® в единый массив.

Символы, определяющие текст проигнорировать, заданный как разделенная запятой пара, состоящая из 'CommentStyle' и вектор символов, массив ячеек из символьных векторов, строка или массив строк.

Например, задайте символ, такой как '%' проигнорировать текст после символа на той же линии. Задайте массив ячеек двух векторов символов, таких как {'/*','*/'}, проигнорировать любой текст между теми последовательностями.

MATLAB проверяет на комментарии только в начале каждого поля, не в поле.

Пример: 'CommentStyle',{'/*','*/'}

Типы данных: char | string

Локаль для чтения дат, заданных как разделенная запятой пара, состоящая из 'DateLocale' и вектор символов в форме xx_YY, где xx строчный ISO 639-1 двухбуквенный код, который задает язык и YY прописная альфа ISO 3166-1 2 кода, которые задают страну. Для списка общих ценностей для локали смотрите Locale аргумент пары "имя-значение" для datetime функция.

Используйте DateLocale задавать локаль, в которой textscan должен интерпретировать месяц и день недельных имен и сокращений при чтении текста как дат с помощью %D спецификатор формата.

Пример: 'DateLocale','ja_JP'

Символы разделителя полей, заданные как разделенная запятой пара, состоящая из 'Delimiter' и вектор символов или массив ячеек из символьных векторов. Задайте несколько разделителей в массиве ячеек из символьных векторов.

Пример: 'Delimiter',{';','*'}

textscan интерпретирует повторенные символы-разделители как отдельные разделители и возвращает пустое значение к выходной ячейке.

В каждой строке данных разделитель полей по умолчанию является пробелом. Пробел может быть любой комбинацией пробела (' '), клавиша Backspace ('\b'), или вкладка ('\t''characters'. Если вы не задаете разделитель, то:

  • символы-разделители совпадают с пробельными символами. Пробельными символами по умолчанию является ' 'B, и '\t'. Используйте 'Whitespace' аргумент пары "имя-значение", чтобы задать альтернативные пробельные символы.

  • textscan интерпретирует повторенные пробельные символы как один разделитель.

Когда вы задаете одну из следующих escape-последовательностей как разделитель, textscan преобразует ту последовательность в соответствующий управляющий символ:

\bКлавиша Backspace
\nНовая строка
\rВозврат каретки
\tВкладка
\\Обратная косая черта (\)

Типы данных: char | string

Возвращенное значение для пустых числовых полей в файлах разделенного текста, заданных как разделенная запятой пара, состоящая из 'EmptyValue' и скаляр.

Символы конца линии, заданные как разделенная запятой пара, состоящая из 'EndOfLine' и вектор символов или строка. Вектором символов должен быть '\r\n' или это должно задать отдельный символ. Общие символы конца линии являются символом новой строки ('\n') или возврат каретки ('\r'). Если вы задаете '\r\n', затем функция импорта обрабатывает любой \rN, и комбинация двух (\r\n) как символы конца линии.

Последовательностью конца линии по умолчанию является \nR, или \r\n, В зависимости от содержимого вашего файла.

Если существуют отсутствующие значения и последовательность конца линии в конце последней линии в файле, то функция импорта возвращает пустые значения для тех полей. Это гарантирует что отдельные ячейки в выходном массиве ячеек, C, одного размера.

Пример: 'EndOfLine',':'

Типы данных: char | string

Символы экспоненты, заданные как разделенная запятой пара, состоящая из 'ExpChars' и вектор символов или строка. Символами экспоненты по умолчанию является eED, и D.

Типы данных: char | string

Количество линий заголовка, заданных как разделенная запятой пара, состоящая из 'HeaderLines' и положительное целое число. textscan пропускает линии заголовка, включая остаток от текущей линии.

Несколько обработка разделителя, заданная как разделенная запятой пара, состоящая из 'MultipleDelimsAsOne' и любой true или false. Если true, затем функция импорта обрабатывает последовательные разделители как один разделитель. Повторные разделители, разделенные пробелом, также обработаны как один разделитель. Необходимо также задать Delimiter опция.

Пример: 'MultipleDelimsAsOne',1

Поведение, когда textscan сбои, чтобы читать или преобразовать, заданный как разделенная запятой пара, состоящая из 'ReturnOnError' и любой true или false. Если truetextscan завершает работу без ошибки и возвращает все полевое чтение. Если falsetextscan завершает работу с ошибкой и не возвращает выходной массив ячеек.

Текст заполнителя, чтобы обработать как пустое значение, заданное как разделенная запятой пара, состоящая из 'TreatAsEmpty' и вектор символов, массив ячеек из символьных векторов, строка или массив строк. Эта опция только применяется к числовым полям.

Типы данных: char | string

Пробельные символы, заданные как разделенная запятой пара, состоящая из 'Whitespace' и вектор символов или строка, содержащая один или несколько символов. textscan добавляет пробел, char(32), любому задал Whitespace, если Whitespace isempty) и formatSpec включает любой спецификатор преобразования.

Когда вы задаете одну из следующих escape-последовательностей как любой пробельный символ, textscan преобразует ту последовательность в соответствующий управляющий символ:

\bКлавиша Backspace
\nНовая строка
\rВозврат каретки
\tВкладка
\\Обратная косая черта (\)

Типы данных: char | string

Тип выходных данных текста, заданного как разделенная запятой пара, состоящая из 'TextType' и любой 'char' или 'string'. Если вы задаете значение 'char', затем textscan возвращает текст как массив ячеек из символьных векторов. Если вы задаете значение 'string', затем textscan возвращает текст как массив типа string.

Выходные аргументы

свернуть все

Файл или текстовые данные, возвращенные как массив ячеек.

Для каждого числового спецификатора преобразования в formatSpec, textscan функция возвращает K- 1 MATLAB числовой вектор к выходному массиву ячеек, C, где K число раз что textscan находит поле, совпадающее со спецификатором.

Для каждого текстового спецификатора преобразования (%sQ, или %[...]) в formatSpec, textscan функция возвращает K- 1 массив ячеек из символьных векторов, где K число раз что textscan находит поле, совпадающее со спецификатором. Для каждого преобразования символов, которое включает оператор ширины поля, textscan возвращает K- M символьный массив, где M ширина поля.

Для каждого datetime или категориального спецификатора преобразования в formatSpec, textscan функция возвращает K- 1 datetime или категориальный вектор к выходному массиву ячеек, C, где K число раз что textscan находит поле, совпадающее со спецификатором.

Положение в конце сканирования, в файле или векторе символов, возвратилось как целое число класса double. Для файла, ftell(fileID) возвратил бы то же значение после вызова textscan. Для вектора символов, position указывает сколько символов textscan чтение.

Алгоритмы

textscan преобразует числовые поля в заданный выходной тип согласно правилам MATLAB относительно переполнения, усечения и использования NaNInf, и -Inf. Например, MATLAB представляет целочисленный NaN как нуль. Если textscan находит пустое поле сопоставленным со спецификатором целочисленного формата (таким как %d или %u), это возвращает пустое значение как нуль и не NaN.

При соответствии с данными к текстовому спецификатору преобразования, textscan чтения, пока это не находит разделитель или символ конца линии. При соответствии с данными к числовому спецификатору преобразования, textscan чтения, пока это не находит нечисловой символ. Когда textscan больше не может совпадать с данными к конкретному спецификатору преобразования, они пытаются совпадать с данными к следующему спецификатору преобразования в formatSpec. Знак (+ или -), символы экспоненты и десятичные точки рассматриваются цифровыми символами.

ЗнакЦифрыДесятичная точкаЦифры'ExponentCharacter' ЗнакЦифры
Считайте один символ знака, если он существует.Считайте одну или несколько цифр.Считайте одну десятичную точку, если она существует.Если существует десятичная точка, считайте одну или несколько цифр, которые сразу следуют за нею.Считайте один символ экспоненты, если он существует.Если существует символ экспоненты, считайте один символ знака.Если существует символ экспоненты, считайте одну или несколько цифр, которые следуют за ним.

textscan импорт любое комплексное число в целом в комплексное числовое поле, преобразовывая действительные и мнимые части в заданный числовой тип (такие как %d или %f). Допустимые формы для комплексного числа:

±<real>±<imag>i|j

Пример: 5.7-3.1i

±<imag>i|j

Пример: -7j

Не включайте встроенный пробел в комплексное число. textscan интерпретирует встроенный пробел как разделитель полей.

Представлено до R2006a