Считайте данные из текстового файла; запишите в несколько выходных параметров
textread
не рекомендуется. Используйте textscan
вместо этого.
[A,B,C,...] = textread(filename,format)
[A,B,C,...] = textread(filename,format,N)
[...] = textread(...,param,value,...)
[A,B,C,...] = textread(filename,format)
считывает данные из файла filename
в переменные A
, B
, C
, и так далее, с помощью заданного format
, пока целый файл не читается. Задайте filename
и входные параметры format
как векторы символов или представьте скаляры в виде строки. textread
полезен для чтения текстовых файлов с известным форматом. textread
обрабатывает и файлы фиксированного и свободного формата.
При чтении файлов крупного текста, чтении из отдельного момента в файле или чтении данных о файле в массив ячеек, а не несколько выходных параметров, вы можете предпочесть использовать функцию textscan
.
textread
совпадает и преобразовывает группы символов от входа. Каждое поле ввода задано как группа непробельных символов, которая расширяет к следующему пробелу или символу-разделителю, или к максимальной ширине поля. Повторные символы-разделители являются значительными, в то время как повторные пробельные символы обработаны как один.
Вход format
, заданный как вектор символов или скаляр строки, определяет номер и типы возвращаемых аргументов. Количество возвращаемых аргументов является количеством элементов, обозначенных содержимым format
. format
поддерживает подмножество спецификаторов преобразования и соглашения языка C стандартная программа fscanf
. Значения для format
перечислены в таблице ниже. Пробельные символы в format
проигнорированы.
формат | Действие | Вывод |
---|---|---|
Литералы (обычные символы) | Проигнорируйте соответствующие символы. Например, в файле, которому следовал | 'none' |
%d | Считайте значение целого числа со знаком. | Двойной массив |
%u | Считайте целочисленное значение. | Двойной массив |
%f | Считайте значение с плавающей точкой. | Двойной массив |
%s | Считайте пробел или разделенный от разделителя текст. | Массив ячеек из символьных векторов |
%q | Считайте дважды заключенный в кавычки текст, игнорируя кавычки. | Массив ячеек из символьных векторов |
%c | Считайте символы, включая пробел. | Массив символов |
%[...] | Считайте самую длинную группу символов, содержащих символы, заданные в скобках. | Массив ячеек из символьных векторов |
%[^...] | Считайте самую длинную непустую группу символов, содержащих символы, которые не заданы в скобках. | Массив ячеек из символьных векторов |
%*... | Проигнорируйте соответствующие символы, заданные | Никакой вывод |
W... | Считайте ширину поля, заданную |
[A,B,C,...] = textread(filename,format,N)
считывает данные, снова используя формат, заданный в format
, времена N
, где N
является целым числом, больше, чем нуль. Если N
меньше, чем нуль, textread
читает целый файл.
[...] = textread(...,param,value,...)
настраивает textread
с помощью пар param/value
, как перечисленных в таблице ниже.
параметрический усилитель | значение | Действие | |
---|---|---|---|
bufsize | Положительное целое число | Задает максимальную длину вектора символов, в байтах. Значением по умолчанию является | |
commentstyle | matlab | Игнорирует символы после | |
commentstyle | shell | Игнорирует символы после | |
commentstyle | c | Игнорирует символы между | |
commentstyle | c++ | Игнорирует символы после | |
delimiter | Один или несколько символов | Закон как разделители между элементами. Значение по умолчанию не ни один. | |
emptyvalue | Скаляр дважды | Значение, данное пустым ячейкам, когда чтение разграничило файлы. Значение по умолчанию 0. | |
endofline | Отдельный символ или | Символ, который обозначает конец строки. Значение по умолчанию определяется из файла | |
expchars | ExponentCharacters | Значением по умолчанию является | |
headerlines | Положительное целое число | Игнорирует конкретное количество строк в начале файла. | |
whitespace | Любой из списка ниже: | Вектор обработок символов как пробел. Значением по умолчанию является | |
' ' | Пробел |
Когда textread
читает последовательную серию значений whitespace
, он обрабатывает их как один пробел. Когда это читает последовательную серию значений delimiter
, это обрабатывает каждого как отдельный разделитель.
Первая строка mydata.dat
Sally Level1 12.34 45 Yes
Прочитайте первую строку файла как файл свободного формата с помощью формата %
.
[names, types, x, y, answer] = textread('mydata.dat', ... '%s %s %f %d %s', 1)
возвращается
names = 'Sally' types = 'Level1' x = 12.34000000000000 y = 45 answer = 'Yes'
Первая строка mydata.dat
Sally Level1 12.34 45 Yes
Прочитайте первую строку файла как файл фиксированного формата, игнорируя значение с плавающей точкой.
[names, types, y, answer] = textread('mydata.dat', ... '%9c %6s %*f %2d %3s', 1)
возвращается
names = Sally types = 'Level1' y = 45 answer = 'Yes'
%*f
в format
заставляет textread
игнорировать значение с плавающей точкой, в этом случае, 12.34
.
Первая строка mydata.dat
Sally Type1 12.34 45 Yes
Прочитайте первую строку файла, игнорируя символы Type
во втором поле.
[names, typenum, x, y, answer] = textread('mydata.dat', ... '%s Type%d %f %d %s', 1)
возвращается
names = 'Sally' typenum = 1 x = 12.34000000000000 y = 45 answer = 'Yes'
Определение Type%d
в format
заставляет символы Type
во втором поле быть проигнорированными, в то время как остальная часть второго поля читается как целое число со знаком, в этом случае, 1
.
Для файлов с пустыми ячейками используйте параметр emptyvalue
. Предположим файл, который содержит data.csv
:
1,2,3,4,,6 7,8,9,,11,12
Считайте файл с помощью NaN
, чтобы заполнить любые пустые ячейки:
data = textread('data.csv', '', 'delimiter', ',', ... 'emptyvalue', NaN);
Считайте файл fft.m
в массив ячеек из символьных векторов.
file = textread('fft.m', '%s', 'delimiter', '\n', ... 'whitespace', '');
Если вы хотите сохранить продвижение и конечные пробелы в тексте, используйте параметр whitespace
как показано здесь:
textread('myfile.txt', '%s', 'whitespace', '') ans = ' An example of preserving spaces '
fscanf
| readmatrix
| textscan