Материал: Matlab. Практический подход. Самоучитель

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Приложение А. Файловый ввод/вывод

Рис. А.5. Сохранение данных в файл с помощью функции save()

ски в команде res=[x',y',z'] используются для формирования матрицы из трех столбцов. Содержимое этой матрицы мы записываем в текстовый файл. Для этого используется команда save('C:\Documents\Data\Funcs. txt','res','-ascii'). Первый аргумент функции save() определяет полное название файла, в который записывается переменная, определяемая вторым аргументом функции save(). Опция -ascii является индикатором того, используется ли текстовый формат. В результате в файл Funcs.txt будет записано содержимое переменной res. Содержимое этого файла показано на рис. А.6.

Рис. А.6. Содержимое файла Funcs.txt

На заметку

Если файл Funcs.txt не существовал, он будет создан. Если он существовал, содержимое файла переписывается.

Кроме обработки файла целиком, не менее часто необходимо работать с фрагментами данных, записанных в файл или которые необходимо туда

421

Самоучитель Matlab

записать. Для таких задач используют инструкции низкоуровневого доступа к файлам.

Для открытия файла и последующей работы с ним предназначена функция fopen(). Аргументом функции указывается открываемый файл. Опционные параметры определяют режим открытия файла (то есть то, для чего открывается файл). Назначение некоторых опций кратко описано в табл. А.1.

Табл. А.1. Некоторые опции определения режима открытия файла

Опция

Назначение

 

 

'r'

Файл открывается для чтения. Этот режим применяется по умолчанию

'w'

Файл открывается (или создается новый) для записи. Если у файла есть

содержимое, при записи оно удаляется

 

 

'a'

Файл открывается (или создается новый) для записи. Новое содержимое

дописывается в конец файла. Старое содержимое не удаляется

 

 

'r+'

Существующий файл открывается для чтения и записи

'w+'

Открывается существующий файл или создается новый для чтения и за-

писи. Новое содержимое замещает старое

 

 

'a+'

Открывается существующий файл (или создается новый) для чтения и за-

писи. Новое содержимое дописывается в конец файла

 

 

По умолчанию используется режим работы с бинарными файлами. Для работы с текстовыми файлами в опции режима добавляется литера t – например, 'rt' (открытие текстового файла для чтения) или 'wt+' (открытие (создание) текстового файла для чтения и записи).

В качестве результата при вызове функции fopen() возвращается указатель на открытый файл. Открываемые файлы нумеруются подряд, начиная с номера 3. Если файл открыт не был, возвращается значение -1.

На заметку

По умолчанию индексы 0, 1 и 2 имеют стандартные файлы системного ввода stdin, системного вывода stdout и системный файл потока ошибок stderr соответственно. Эти файлы доступны автоматически, и открывать их не нужно.

После завершения работы с файлом его следует закрыть с помощью функции fclose(). Аргументом функции передается указатель на файл (индикатор файла, который получаем при его открытии). Есть также ряд полезных функций, которые используются при работе с файлом. Среди них функции fread() и fwrite(), предназначенные соответственно для чтения данных из файла и записи данных в файл. Функция feof() позволяет определить, достигнут ли конец файла, функция ftell() возвращает в качестве значения текущую позицию указателя (смещение в байтах от начала файла), функция frewind() переводит указатель в начало файла, а функция fseek() позволяет перемещать указатель в нужную позицию в файле.

422

Приложение Б Структуры и ячейки

Чрезвычайно интересно! Поразительную ерунду сочиняют эти газетчики с утра. Дождемся вечерних новостей.

К/ф "Клуб самоубийц, или Приключения титулованной особы"

Понятие структуры в Matlab близко к тому, что мы подразумеваем под структурами, например, в С++. Структура представляет собой способ организации разнородных данных. Данные относятся к структуре через поля. Фактически в структуре объединяются разные переменные, которые являются полями структуры. Другими словами, если о каком-то объекте известно, что по своей типизации он относится к структуре, то, во-первых, об этом объекте будем говорить, что он является экземпляром структуры и, во-вторых, у этого объекта есть поля. Значения полей могут быть самыми разнообразными.

На заметку

Структура представляет собой шаблон, на основе которого создаются экземпляры структуры. В этом смысле можно говорить о структуре как о типе данных.

Но если в С++ перед созданием экземпляров структуры саму структуру нужно предварительно описать, то в Matlab экземпляр структуры можно создавать сразу. Существует несколько способов сделать это. Так или иначе, используется точечный синтаксис – после имени экземпляра структуры через точку указывается поле (имя поля). Пример создания экземпляра простой структуры приведен в документе на рис. Б.1.

Экземпляр структуры создается командой

Card.name='Алексей Васильев';

Card.age=36;

Card.city='Киев';

Card.email='vasilev@univ.kiev.ua'

У созданного экземпляра структуры Card четыре поля: name, age, city и email. Для того, чтобы получить значение поля, используем инструкцию вида структура.поле – как, например, в команде Card.email.

Экземпляры структур можно создавать также с помощью функции struct(). Простой пример использования этой функции приведен в документе на рис. Б.2.

423

Самоучитель Matlab

Рис. Б.1. Создание экземпляра структуры

Рис. Б.2. Еще один способ создания экземпляра структуры

В этом случае экземпляр структуры создается такой командой:

Card=struct('name','Алексей Васильев','age',36,...

'city','Киев','email','vasilev@univ.kiev.ua')

Аргументы функции struct() указываются парами поле-значение. Результат – аналогичный предыдущему.

Использование единственного экземпляра структуры представляется малоперспективным. Вся прелесть структур связана как раз с возможностью использования многих экземпляров структуры. Обычно такие "многие" экземпляры реализуют в виде массива – массива структур. Пример создания небольшого массива структур приведен в документе на рис. Б.3.

424

Приложение Б. Структуры и ячейки

Рис. Б.3. Массив структур

Создание структур – элементов массива основано на определении полей соответствующих структур. Обращение к полям структуры – элемента массива выполняется в формате структура(индекс).поле. Например, массив из трех структур создается такими командами:

>>MS.code=[1 2 3]; MS.num=100;

>>MS(2).code=[4 5 6]; MS(2).num=200;

>>MS(3).code=[7 8 9]; MS(3).num=300;

Вызов команды, состоящей из имени массива структур (например, команда MS), приводит к отображению общей информации о массиве.

425

Источник: https://studfile.net/preview/16433384/