- •Программирование в среде Matlab Работу подготовил студент группы мп-31 Самсоненко Егор Введение
- •1. Работа в среде matlab
- •1.1 Командное окно
- •1.2 Система меню
- •1.3 Интерфейс matlab
- •2. Программирование в среде matlab
- •2.1 Команды ввода – вывода
- •2.1.1 Команды load и save
- •2.1.2 Форматные операции ввода-вывода
- •2.1.3 Команды для работы со стандартными файлами
- •2.2 Объектно-ориентированное программирование
- •2.3 Отладка
- •2.3.1 Отладка в командном режиме
- •2.3.2 Редактор medit и отладка
- •2.4 Разработка mex-файлов
2.1.2 Форматные операции ввода-вывода
Для операций ввода-вывода с использованием форматов данных и работы с бинарными файлами применяются команды, напоминающие стандартные функции языка С.
Перед началом записи или чтения нужный файл следует открыть при помощи команды
FI=fopen ('NAME'. 'FLAG')
Имя файла NAME должно содержать путь, если файл берется из каталога, не указанного в списке каталогов Path Browser. Строковая переменная ' FLAG' определяет тип файла и способ работы с ним: ' t' – текстовый файл, ' b' – бинарный файл, ' г' – чтение, V – запись, " г+' – чтение и запись одновременно, ' а' – добавление в конец файла. Например, для чтения бинарного файла следует задать флаг ' rb', для записи текстового – 'wt'. Полученный в результате выполнения операции fopen числовой идентификатор FI используется в качестве параметра для функций fread и fwrite. Если открыть файл не удалось, то FI=-1. Чтобы закрыть файл, надо выполнить команду fclose(FI). Список команд ввода-вывода приведены в таблице 2.1.
Таблица 2.1
Имя |
Назначение |
Fopen |
Открытие файла |
Fclose |
Закрытие файла |
Fread |
Считывание данных из файла |
Fwrite |
Запись данных в файл |
f scanf |
Считывание форматированных данных из файла |
Fprintf |
Запись данных в файл или вывод на экран |
Fgetl |
Считывание строки из файла без служебных символов |
Fgets |
Считывание строки из файла со служебными символами |
dlmread |
Чтение данных с разделителями из текстового файла |
textread |
Чтение форматированных данных из текстового файла |
Команда fread применяется для чтения бинарных файлов:
[AXOUNT]=fread
(FI.SIZE.'PREC'.'SKIP')
Здесь А – имя матрицы, куда заносятся считываемые данные, a COUNT – число прочитанных элементов. Если дополнительный параметр SIZE отсутствует, то считывается весь файл, целое число N в качестве SIZE задает считывание N элементов и формирование вектора-строки, а при указании в качестве SIZE вектора [М, N] формируется матрица размера [M.N], причем параметр N может принимать значение inf. Параметр 'PREC задает число бит для записи чисел. Например, текстовая строка 'float64' указывает, что данные следует записывать в формате двойной точности, по 8 байт на число, а четырехбайтовый формат записи целых чисел задается строкой 'integer*4'. Перечень допустимых форматов можно получить по справке help fread. Дополнительный параметр 'SKIP' определяет число байтов, которое должно быть пропущено после считывания очередного элемента.
Команда fwrite используется для записи бинарных файлов:
COUNT=fwrite (FI, PARA.'PREC.'SKIP')
Здесь FI – идентификатор файла, PARA – имя записываемой переменной, а назначение остальных параметров то же, что и для команды fread.
Если же при чтении не определить структуру матрицы или указать иной формат для чтения, то результатом будет вектор-строка из элементов, число которых и сами значения определяются форматом считывания.
Для считывания части данных используется функция f seek (FI, NUM.' FLAG'), служащая для перемещения на целое число NUM позиций, причем положительное NUM означает продвижение к концу файла, а отрицательное – к началу файла. После открытия файла указатель установлен на первый байт. После считывания очередного числа указатель переместится на столько байтов, каков формат чтения. Текущее положение выводится по команде ftell (FI). Для проверки достижения конца файла служит команда feof (FI). Для возврата в начало файла можно использовать функцию frewind (FI).
Бинарные файлы являются просто потоками байтов, а для работы с текстом, разбитым на строки, используются текстовые файлы. Такие файлы могут содержать как текст, так и числовую информацию, которую для записи предварительно следует перевести в строковые переменные при помощи команд num2str и int2str. Для чтения информации из текстовых файлов применяются функции fgetl, fgets и fscanf. Для записи служит функция fprintf, причем если файловый идентификатор равен единице или отсутствует, то вывод идет на экран. Для чтения и записи применяются форматные спецификации. Спецификации при вводе и выводе описаны в таблице 2.2.
Таблица 2.2
Код |
Описание |
% d |
Чтение целого числа (при выводе – переменная double) |
% u |
Чтение положительного целого числа (при выводе – переменная double) |
% f |
Чтение вещественного числа (при выводе – переменная double) |
% s |
Чтение строки с пробелами (при выводе – переменная типа cellstr) |
% q |
Чтение строки (при выводе – переменная типа cellstr) |
% c |
Чтение символов, разделенных пробелами (при выводе – переменная типа cellstr) |
