FREAD - чтение двоичного файла
Синтаксис:
[A, COUNT] = FREAD(FID,SIZE,PRECISION) выполняет чтение двоичных данных в матрицу A. Аргумент COUNT возвращает число успешно считанных элементов.
FID – идентификатор файла из FOPEN.
Аргумент SIZE не обязательный. По умолчанию выполняется чтение всех данных. Допустимые значения SIZE:
N читает N элементов в вектор-столбец. inf читает до конца файла.
[M,N] считывает элементы по столбцам для заполнения M-by-N матрицы.Допустимо задавать число столбцов N как inf.
Аргумент PRECISION определяет число бит для представления данных:
|
|
|
|
|
|
|
|
MATLAB |
C или |
Описание |
|
||
|
|
|
Fortran |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
'uchar' |
'unsigned |
unsigned |
|
||
|
|
|
char' |
character, 8 |
|
|
|
|
|
|
|
bits. |
|
|
|
|
|
|
|
|
|
'schar' |
'signed |
signed |
|
||
|
|
|
char' |
character, 8 |
|
|
|
|
|
|
|
bits. |
|
|
|
|
|
|
|
|
|
'int8' |
'integer*1' |
integer, 8 |
|
||
|
|
|
|
|
bits. |
|
|
|
|
|
|
|
|
|
'int16' |
'integer*2' |
integer, 16 |
|
||
|
|
|
|
|
bits. |
|
|
|
|
|
|
|
|
|
'int32' |
'integer*4' |
integer, 32 |
|
||
|
|
|
|
|
bits. |
|
|
|
|
|
|
|
|
|
'int64' |
'integer*8' |
integer, 64 |
|
||
|
|
|
|
|
bits. |
|
|
|
|
|
|
|
|
|
'uint8' |
'integer*1' |
unsigned |
|
||
|
|
|
|
|
integer, 8 |
|
|
|
|
|
|
bits. |
|
|
|
|
|
|
|
|
|
'uint16' |
'integer*2' |
unsigned |
|
||
|
|
|
|
|
integer, 16 |
|
|
|
|
|
|
bits. |
|
|
|
|
|
|
|
|
|
'uint32' |
|
'integer*4' |
|
unsigned |
|
|
|
|
|
|
integer, 32 |
|
|
|
|
|
|
bits. |
|
|
|
|
|
|
|
|
|
'uint64' |
'integer*8' |
unsigned |
|
||
|
|
|
|
|
integer, 64 |
|
|
|
|
|
|
bits. |
|
|
|
|
|
|
|
|
|
'single' |
'real*4' |
floating point, |
|
||
|
|
|
|
|
32 bits. |
|
|
|
|
|
|
|
|
|
'float32' |
'real*4' |
floating point, |
|
||
|
|
|
|
|
32 bits. |
|
|
|
|
|
|
|
|
|
'double' |
'real*8' |
floating point, |
|
||
|
|
|
|
|
64 bits. |
|
|
|
|
|
|
|
|
|
'float64' |
'real*8' |
floating point, |
|
||
|
|
|
|
|
64 bits. |
|
|
|
|
|
|
|
|
TEXTREAD - чтение форматированных данных из текстового файла
Синтаксис:
[A,B,C,...] = TEXTREAD(FILENAME,FORMAT,N) - читает данные из текстового файла FILENAME в переменные A,B,C,…. Число и тип возвращаемых аргументов определяется форматной строкой FORMAT Форматная строка FORMAT поддерживает подмножество спецификаторов преобразования функции FSCANF языка C . Если параметр N определен, то форматная строка примемяется к данным N раз. Если N меньше нуля TEXTREAD читает весь файл - по умолчанию. Строка FORMAT может содержать символы обобщенных пробелов, обычные символы или символы спецификаторов преобразования:
%d - знаковое целое(output is a double array) %u - целое (output is a double array)
%f - число с плавающей точкой (output is a double array) %s - строки , разделяемые пробелами(output is a cellstr)
%q - строки, ограниченные двойными кавычками(output is a cellstr) %c - символы, включая символы пробелов (output is char array) %[...] - наибольшая строка, содержащая символы из множества, ограниченного скобками (output is a cellstr)
%[^...] - наибольшая строка,не содержащая символы из множества, ограниченного скобками (output is a cellstr)
Использование %* вместо % в спецификаторах заставляет TEXTREAD пропускать совпадающие символы . Ширина считываемых полей
регулируется для целых и действительных данных: Например, %5d читает 5 целое из 5 цифр. Формат %f поддерживает форму %<ширина>.<точность>f.
[...] = TEXTREAD(...,param,value,...) позволяют парами param/value
определять поведение TEXTREAD.
Допустимые param/value:
'whitespace' - вектор символов обобщенных пробелов (по умолчанию ' \b\r\n\t')
'delimiter' - разделители (по умолчанию - нет)
'expchars' - символы представления експоненциальной формы (по умолчанию 'eEdD')
'bufsize' - максимальная длина строки в байтах(по умолчанию 4095) 'headerlines' - число пропускаемых строк
'commentstyle' – стиль комментария: 'matlab' -- символы после % игнорируются 'shell' -- символы после # игнорируются 'c' -- символы между /* and */ игнорируются 'c++' -- символы после // игнорируются
Примеры:
Допустим, что текстовый файл data.txt содержит:
Sally Type1 12.34 |
45 |
Yes |
|
Joe |
Type2 23.54 |
60 |
No |
Bill |
Type1 33.90 |
12 |
No |
Команда чтения из такого файла может иметь вид: [names,types,x,y,answer] = textread('data.txt','%s %s %f %d %s');
Чтение с текстовым литералом: [names,typenum,x,y,answer]=textread('data.txt','%s Type%d %f %d %s');
Чтение файла в фиксированном формате с пропуском пар чисел: [names,types,y,answer] = textread('data.txt','%9c %5s %*f %2d %3s');
Чтение М-файла в массив ячеек-строк.
file = textread('ex1break.m','%s','delimiter','\n','whitespace','');