Считывание данных из текстового файла; запись на несколько выходов
Примечание
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 игнорируются.
формат | Действие | Продукция |
|---|---|---|
Опечатки (обычные символы) | Игнорировать соответствующие символы. Например, в файле, имеющем | Ничего |
%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 | Один или несколько символов | Действовать как разделители между элементами. Значение по умолчанию - none. | |
emptyvalue | Скалярный двойник | Значение, присваиваемое пустым ячейкам при чтении файлов с разделителями. Значение по умолчанию - 0. | |
endofline | Одиночный символ или | Символ, обозначающий конец строки. По умолчанию определяется из файла | |
expchars | Символы экспоненты | По умолчанию: | |
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