Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

lection_matlab_all / matlab_9

.pdf
Скачиваний:
19
Добавлен:
27.05.2015
Размер:
222.28 Кб
Скачать

Работа с форматированными файлами и файлами изображений

Файлы, содержащие форматированные данные (в виде читабельного текста), называют форматированными файлами. Их открытие для обработки так же, как и двоичных, производится командой fid = fopen(filename, permission), только параметр permission необходимо задать одним из следующих значений (добавляется символ 't'):

'rt' – открытие файла для чтения;

'rt+' – открытие файла для чтения и записи;

'wt' – удаление содержимого существующего файла или создание нового и открытие его для записи;

'at' – создание и открытие нового файла или открытие существующегодля записи с добавлением в конец файла.

Функции для чтения символьных строк:

line = fgetl(fid) возвращает строку из файла с идентификатором fid с удалением символа конца строки. Если функция fgetl обнаруживает конец файла, то она возвращает значение –1;

line = fgets(fid) возвращает строку из файла с идентификатором fid, не удаляя символ конца строки. Если функция fgets обнаруживает конец файла, то она возвращает значение –1;

line = fgets(fid, nchar) возвращает не больше чем nchar первых символов строки. После признака конца строки или конца файла никакие дополнительные символы не считываются.

Форматированный вывод в файл:

• count = fprintf(fid, format, A,…) форматирует данные, содержащиеся в действительной части матрицы А, под контролем строки format и записывает их в файл с идентификатором fid (возвращается функцией fopen). Возвращает число записанных байтов — count.

Строка format (почти полностью аналогично формату С) определяет систему счисления, выравнивание, значащие цифры, ширину поля и другие атрибуты выходного формата данных. Она может содержать также обычные символы наряду со спецификаторами, знаками выравнивания и т. д.

Спецификаторы формата:

%d - данные в десятичной системе (целые со знаком) %u - данные в десятичной системе (целые без знака) %f - данные с фиксированной точкой

%e - экспоненциальное представление чисел с использованием символа «e» в нижнем регистре, например 3.1415e + 00

%E - экспоненциальное представление чисел с использованием символа «E» в верхнем регистре, например 3.1415Е + 00

%g - компактный вариант %e и %f, незначащие нули не выводятся

%G - то же самое, что и %g, но используется верхний регистр для символа «E»

Спецификаторы формата:

%c - одиночный символ %s - строка символов

%o - данные в восьмеричной системе (без знака)

%x - данные в шестнадцатеричной системе с использованием символов нижнего регистра («a»…«f»)

%X - данные в шестнадцатеричной системе с использованием символов верхнего регистра («A»…«F»)

Управляющие символы (escape-последовательности)

\n - новая строка

\t - горизонтальная табуляция

\b - возврат на один символ

\r - возврат каретки

\f - новая страница

 

\\ - символ «\»

 

\'' - одиночная кавычка «'»

 

%% - символ «%»

 

Между знаком процента и буквой в спецификатор могут быть вставлены дополнительные символы:

Знак «-» - выравнивание преобразованных аргументов по левому краю, например %–6.2d.

Знак «+» - печатать знак числа (+ или -), например %+6.2d.

Цифрами определяется минимальное число знаков числа (ширина поля), которые будут напечатаны (%8f), а цифры после точки определяют количество символов, печатаемых справа от десятичной точки ( %8.3f). Цифра «0» после «%» - заполнение свободного поля вывода нулями вместо пробелов (%06.2d).

Чтение форматированных данных из файла:

• A = fscanf(fid, format) или [A,count] = fscanf(fid, format, size) - читает данные из файла с идентификатором fid, преобразует их согласно значению параметра format и возвращает в виде матрицы А. count - количество успешно считанных элементов.

Параметр format представляет собой строку, определяющую формат данных, которая состоит из обычных символов и (или) спецификаторов. Спецификаторы указывают тип считываемых данных и включают символ %, опцию ширины поля и символы формата. Возможные спецификаторы формата перечислены выше.

Параметр size определяет количество считываемых данных.

Допустимы следующие значения size:

n – чтение n элементов в вектор-столбец;

inf – чтение элементов до конца файла и помещение их в вектор-столбец, содержащий такое же количество элементов, что и в файле;

[m, n] – считывает столько элементов, сколько требуется для заполнения матрицы размера m×n. Заполнение происходит (как всегда) по столбцам. Величина n (но не m!) может принимать значение inf.

result.dat: Пример:

-3.1416 -1.000000 -2.8274 -0.951057 -2.5133 -0.809017 -2.1991 -0.587785 -1.8850 -0.309017 -1.5708 0.000000 -1.2566 0.309017 -0.9425 0.587785 -0.6283 0.809017 -0.3142 0.951057 0.0000 1.000000 0.3142 0.951057 0.6283 0.809017 0.9425 0.587785 1.2566 0.309017 1.5708 0.000000 1.8850 -0.309017 2.1991 -0.587785 2.5133 -0.809017 2.8274 -0.951057 3.1416 -1.000000

>>x = linspace(-pi, pi, 21);

>>y = [x; cos(x)];

>>fid = fopen('result.dat', 'w');

>> fprintf(fid,'%6.4f %10.6f\n',y);

>>fclose(fid);

>>fid = fopen('result.dat', 'r');

>>z = fscanf(fid, '%g', [2, 20]);

>>fgetl(fid)

ans = ''

>> fgets(fid)

ans = 3.1416 -1.000000 >> fclose(fid)

Соседние файлы в папке lection_matlab_all