
- •Лабораторная работа №12 Файловые операции в Matlab
- •Структуры
- •Массив структур
- •Текстовые файлы
- •Запись в текстовый файл
- •Форматный вывод
- •Запись данных массивов структур в текстовый файл
- •Считывание информации из текстового файла
- •Требования к оформлению отчета
- •Контрольные вопросы
- •Рекомендуемая дополнительная литература
Текстовые файлы
Обработка информации в файле включает в себя: чтение данных, их изменение или использование и, наконец, сохранение полученных результатов. Программирование обработки информации состоит из следующих этапов: открытие файла, считывание данных, запись информации, закрытие файла. Файлы можно использовать либо только для чтения (входные файлы с исходными данными) или только для записи (выходные файлы с результатами обработки), либо для изменения (входной и выходной файл одновременно). Следующие разделы посвящены описанию команд MATLAB, реализующих вышеперечисленные действия, и демонстрации их использования на некоторых простых примерах.
Открытие файла, считывание данных и закрытие файла
Команда fopen предназначена для открытия существующего или создания нового файла. Имя файла указывается в апострофах первым входным аргументом. Второй аргумент задает способ доступа к файлу, он может принимать следующие значения:
'rt' – открываемый текстовый файл предназначен только для чтения;
'rt+'– открываемый текстовый файл предназначен для чтения и записи;
'wt' – создаваемый пустой текстовый файл предназначен только для записи;
'wt+'– создаваемый пустой текстовый файл предназначен для записи и чтения;
'at' – открываемый текстовый файл предназначен только для добавления данных в конец файла (если файла не существует, то он создается);
'at+' – открываемый текстовый файл предназначен для добавления данных в конец файла и чтения данных (если файл не существует, то он создается).
Символ t указывает на то, что файл текстовый. Вышеперечисленные способы доступа возможны и для двоичных файлов. Например: 'w+' означает создание пустого двоичного файла для чтения и записи.
Выходным аргументом fopen является идентификатор (ссылочный или логический номер), присвоенный файлу. Если файл открыть не удалось, то идентификатор становится равным минус единице. Ошибки часто возникают из-за того, что MATLAB не может найти требуемый для чтения файл. Всегда лучше указывать полное имя файла, при задании только имени и расширения MATLAB производит поиск в текущем каталоге и путях поиска. Например, если в вашем текущем каталоге нет файла beep.m, то fopen('beep.m','rt') найдет его в подкаталоге \toolbox\MATLAB\general\ основного каталога MATLAB. Функция fopen может быть вызвана и со вторым дополнительным выходным аргументом – строковой переменной с сообщением о результате открытия.
По окончании работы необходимо закрыть файл командой fclose, указав в качестве входного аргумента идентификатор файла.
Запись в текстовый файл
Символы текстового файла образуют строки со словами, предложениями или числами. Запись текстовых строк достаточно проста, а вот для занесения в текстовый файл чисел приходится прибегать к специальным форматам. Вывод информации в текстовый файл производится при помощи функции fprintf.
Запись строк
Откройте текстовый файл, находящийся в текущем каталоге, в режиме записи:
F=fopen('example.txt','w')
Если файла example.txt в текущем каталоге или в путях поиска нет, то он будет создан.
Добавление строки в текстовый файл осуществляется при помощи fprintf, вызванной с двумя входными аргументами – идентификатором файла и строкой с текстом, например, команда
fprintf(F, 'Строка добавлена командой fprintf. ')
записывает соответствующую строку в файл с идентификатором F, присвоенным ему при открытии. Последующая команда fprintf выводит заданную строку сразу за предыдущей, а не на новой строке:
fprintf ( F , 'Еще строка.')
Для вывода текста с новой строки следует добавить символ перевода строки \n в начало новой строки после апострофа:
fprintf(F, '\nЭтот текст с новой строки.')
Символ перевода строки \n можно разместить в конце строки, после которой текст должен начинаться с новой строки, например, последовательность команд
fprintf(F, 'Строка добавлена командой fprintf. ')
fprintf(F, 'Еще строка.\n')
fprintf(F, 'Этот текст с новой строки.')
приводит к аналогичному результату.
Конечно, вторым аргументом fprintf может быть не только строка, заключенная в апострофы, но и строковая переменная:
str = 'Этот текст добавляется в файл.'
fprintf(F, str)
Для указания команде fprintf, что следующий вывод должен осуществляться с новой строки необходимо использовать сцепление строк либо при помощи квадратных скобок, либо с использованием strcat
str = 'Этот текст запишется в файл, а следующий – с новой строки';
fprintf(F, [str '\n' ] ) ;
или
fprintf (F, strcat(str, ' \n ' ) )
После завершения рассмотрения примеров не забудьте закрыть файл с помощью команды fclose.
fclose(F)
Задание 4.
Выполните последовательность команд, представленных выше. Покажите содержимое файла example.txt.
Пример 1.
Написать файл-функцию sintable, выводящую таблицу значений функции sin. Первая часть программы, записывающая в файл название и шапку таблицы, приведена ниже.
function sintable(filename)
% файл-функция для вывода таблицы sin(x) в файл
% Использование sintable(filename)
% Добавьте проверку входных и выходных параметров
% Открытие нового файла для записи
[F, mes] = fopen(filename, 'w');
% Печать в файл заголовка таблицы
fprintf(F, 'ТАБЛИЦА ЗНАЧЕНИЙ ФУНКЦИИ sin(x)\n');
% Печать в файл шапки таблицы
fprintf(F, '-------------------\n');
fprintf(F, '| x | y= sin(x)|\n');
fprintf(F, '-------------------\n');
% Закрытие файла
fclose(F);