Специализированные файлы
Приведенные ниже функции относятся к некоторым специализированным файлам:
М = dlmread(filename, delimiter) — считывает данные из файла filename с ASCII-разделителем, используя разделитель delimiter, в массив М. Используйте '\t', i чтобы определить в качестве разделителя символ табуляции;
М = dlmreadCfilename.delimiter,г.с) — считывает данные из файла filename с ASCII-разделителем, используя разделитель delimiter, в массив М, начиная со смещения г (по строкам) и с (по столбцам). Параметры r и с отсчитываются начиная с нуля, так что г=0, с=0 соответствует первому значению в файле;
М = dlmreadCfilename, deli mi ten, r, с, range) — импортирует индексированный или именованный диапазон данных с разделителями в формате ASCII. Для использования диапазона ячеек нужно определить параметр range в виде range = [ВерхняяСтрока. ЛевыйСтолбец. НижняяСтрока, ПравыйСтолбец].
Аргументы функции dlmread следующие:
delimiter — символ, отделяющий отдельные матричные элементы в электронной таблице формата ASCII;
(,) — разделитель по умолчанию;
r, с — ячейка электронной таблицы, из которой берутся матричные элементы, соответствующие элементам в верхнем левом углу таблицы;
range — вектор, определяющий диапазон ячеек электронной таблицы.
Команда dlmwrite преобразует матрицу MATLAB в файл с ASCII-разделителями, читаемый программами электронных таблиц:
dl mwri te (f i 1 ename. A. delimiter) — записывает матрицу А в верхнюю левую ячейку электронной таблицы filename, используя разделитель delimiter для отделения элементов матрицы. Используйте ' U' для создания файла с элементами, разделенными табуляцией. Все элементы со значением 0 опускаются. Например, массив [102] появится в файле в виде ' 1., 2' (если разделителем является запятая):
dlmwrite(filename,A,delimiter, r,с) — записывает матрицу А в файл filename, начиная с ячейки, определенной r и с, используя разделитель delimiter;
info=imfinfo(filename.fmt) — возвращает структуру, поля которой содержат информацию об изображении в графическом файле. Аргумент filename — строка, определяющая имя графического файла, fmt — строка, которая определяет формат файла. Файл должен находиться в текущей директории или в директории, указанной в пути MATLAB. Если imflnfo не может найти файл с именем filename, она ищет файл с именем filename.fmt.
В табл. 19.5 показаны возможные значения для аргумента fmt.
Таблица 19.5. Поддерживаемые графические форматы и их обозначения
Формат
|
Тип файла
|
'bmp' | Windows Bitmap (BMP) |
'hdf ' | Hierarchical Data Format (HDF) |
'jpg ' или 'jpeg' | Joint Photographic Experts Group (JPEG) |
'pcx' | Windows Paintbrush (PCX) |
'tif 'или 'tiff ' | Tagged Image File Format (TIFF) |
'xwd' | X Windows Dump (XWD) |
Если filename — TIFF- или HDF-файл, содержащий более одного изображения, то 1 nf о представляет собой массив структур с отдельным элементом (т. е. с индивидуальной структурой) для каждого изображения в файле. Например, info(3) будет в таком случае содержать информацию о третьем изображении в файле. Множество полей в info зависит от конкретного файла и его формата. Однако первые девять полей всегда одинаковы. В табл. 19.6 перечислены эти поля и описаны их значения.
Таблица 19.6. Поля информационной структуры и их значения
Поле
|
Значение
|
Filename | Строка, содержащая имя файла; если файл находится не в текущей директории, строка содержит полный путь к файлу |
FileModDate | Строка, содержащая дату последнего изменения файла |
FileSize | Целое число, указывающее размер файла в байтах |
Format | Строка, содержащая формат файла, заданный параметром fmt; для JPEG- и TIFF-файлов возвращается значение, состоящее из трех символов |
FormatVersion | Строка или число, описывающее версию формата |
Width | Целое число, указывающее ширину изображения в пикселях |
Height | Целое число, указывающее высоту изображения в пикселях |
BitDepth | Целое число, указывающее число битов на пиксель |
ColorType | Строка, описывающая тип изображения: 'truecolor' для RGB изображения, 'grayscale' для полутонового изображения или 'indexed' для изображения с индексированными цветами |
info = imfinfo(filename) — пытается определить формат файла по содержимому. Пример:
» info = irrifinfo('С:\выставка\Интернет.bmр')
info =
Filename: 'С:\выставка\Интернет.bmр'
FileModDate: '04-Jan-1999 22:35:56'
FileSize: 481078
Format: 'bmp'
FormatVersion: 'Version 3 (Microsoft Windows 3.x)'
или truecolor (RGB) изображение класса uint8, команда imwrite записывает фактические значения массива в файл. Если А имеет класс double, команда imwrite переопределяет значения в массиве перед записью, используя преобразование uint8(round(255*A)). Эта операция преобразует числа с плавающей запятой в диапазоне [0, 1] к 8-битовым целым числам в диапазоне [0, 255]. Допустимые значения параметра ftnt аналогичны тем, что используются в команде imfinfo;
imwrite(X,map,filename,fmt) — записывает индексированное изображение, находящееся в массиве X, и соответствующую ему цветовую палитру тар в файл filename. Если X содержит изображение класса uint8, команда imwrite записывает фактические значения массива в файл. Если X имеет класс double, команда imwrite переопределяет значения в массиве перед записью, используя преобразование uintS(X-l). Палитра тар должна иметь класс double; функция imwrite переопределяет значения в тар, используя преобразование uint8(round (255*mар));
imwrite (....filename) — записывает изображение в filename в формате, указанном в расширении файла. Расширение может быть одним из допустимых значений параметра fmt;
imwrite (....Parameter, Value....) определяет параметры, которые контролируют различные свойства выходного файла. Параметры используются для HDF, JPEG, и TIFF файлов;
М = wklread(filename) — считывает электронную таблицу Lotusl23 (WK1) в матрицу М;
М = wklread(filename.r.c) — считывает данные, начиная с ячейки, определенной значениями (r,с). Параметры г и с отсчитываются от нуля, так что г=0, с=0 определяют первую ячейку в файле;
М = wklread(filename,r,c,range) — считывает диапазон значений, определенный параметром range, где range может быть представлен в одной из следующих форм:
вектор с четырьмя элементами, определяющий диапазон ячеек в формате [верхняя_строка. левый_столбец, нижняя_строка, правый_столбец];
диапазон ячеек, определенный строкой, например ' А1... С5';
имя диапазона, определенное в виде строки, например 'Sales'.
wklwrite(filename.M) — записывает значения матрицы М в файл filename электронной таблицы Lotus 123 WK1;
wklwrite(filename,M,r,c) — записывает данные, начиная с ячейки, определенной значениями (r,с). Параметры г и с отсчитываются от нуля, так что г=0, с=0 определяют первую ячейку в электронной таблице.
В табл. 19.7 представлены форматы изображений, доступных для чтения функцией imread. Списки параметров и их возможных значений для функции imwrite содержатся в табл. 19.8.
Необходимо отметить, что большинство рассмотренных выше функций редко применяются пользователями. Но они довольно широко используются в системных целях и представляют большой интерес для специалистов.
Таблица 19.7. Форматы файлов и их краткое описание
Формат
|
Варианты
|
BMP | 1-битовые, 4-битовые, 8-битовые и 24-битовые несжатые изображения; 4-битовые и 8-битовые изображения со сжатием RLE |
HDF | 8-разрядные растровые изображения, содержащие или не содержащие цветовую палитру; 24-разрядные растровые изображения |
JPEG | Любые JPEG-изображения; JPEG-изображения с некоторыми обычно используемыми расширениями |
PCX | 1-битовые, 8-битовые и 24-битовые изображения |
TIFF | Любые TIFF-изображения, включая!-битовые, 8-битовые и 24-битовые несжатые изображения; 1-битовые, 8-битовые и 24-битовые изображения с packbit-сжатием; 1-битовые изображения со сжатием CCITT |
XWD | 1-битовые и 8-битовые Zpixmaps; XYBitmaps; 1-битовые XYPixmaps |
Таблица 19.8. Параметры, используемые при записи графических файлов
Параметр | Значение | Значение по умолчанию |
Параметры для HDF-файлов | ||
'Compression' | Одно из следующих значений: 'none', Vie', 'jpeg' | 'rle' |
'Quality' | Число между 0 и 100; параметр поддерживается для 'Compression'='jpeg'; чем больше число, тем выше качество файла (меньше искажений файла при сжатии) и тем больше его размер | 75 |
'WriteMode' | Одно из следующих значений: 'overwrite', 'append' | 'overwrite' |
Параметры для JPEG-файлов | ||
'Quality' | Число между 0 и 100; чем больше число, тем выше качество файла (меньше искажений при сжатии файла) и тем больше его размер. | 75 |
Параметры для TIFF-файлов | ||
'Compression' | Одно из следующих значений: 'none', 'packbits', 'ccitt'; значение 'ccitt' допустимо только для двоичных (двухцветных) изображений | 'ccitt' для двоичных изображений; 'packbits' для всех остальных |
'Description' | Любая строка; значение поля ImageDescription возвращается командой imfinfo | Пустая строка |
'Resolution' | Скалярное значение для разрешения в направлениях х и у |
72 |