Считывайте данные из текстового файла; запись в несколько выходов
Примечание
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
совпадает и преобразует группы символов из входов. Каждое входное поле определяется как группа непустых символов, которая простирается до следующего символа «пустое пространство» или «разделитель» или до максимальной ширины поля. Повторные разделители символов значительны, в то время как повторные символы белого пространства рассматриваются как единица.
The 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 | Один или несколько символов | Действовать как разделители между элементами. По умолчанию это нет. | |
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