Для хранения различных типов данных в системе MATLAB используются так называемые структуры (structure) и ячейки (cell). Структуры (иногда их называют массивами структур) служат для хранения массивов различных типов данных, организаванных по принципу пои-менованных полей. Ячейки (или массивы ячеек) являются специальным классом массивов системы MATLAB, чьи элементы состоят из ячеек, в которых могут храниться любые другие массивы данных, применяемые в MATLAB-е. Как структуры, так и ячейки обеспечивают иерархический механизм для хранения самых различных типов данных. Они отличаются друг от друга прежде всего способом организации базы данных. При использовании струк-тур доступ к данным осуществляется при помощи наименований полей, тогда как в массивах ячеек доступ осуществляется при помощи матричной индексации.
В приведенных ниже таблицах дается краткое описание функций MATLAB-а, предназначен-ных для работы с массивами структур и ячеек
Структуры
Функция
Описание
fieldnames
Получить имена полей
getfield
Получить содержание поля
isfield
Истинно, если поле есть в структуре
isstruct
Истинно, если структура
rmfield
Удалить поле
setfield
Установить содержимое поля
struct
Создать массив структур
struct2cell
Преобразовать структуру в массив ячеек
Ячейки
Функция
Описание
cell
Создать массив ячеек
cell2struct
Преобразовать массив ячеек в структуру
celldisp
Показать содержимое массива ячеек
cellfun
Применить функцию к массиву ячеек
cellplot
Показать графическую структуру массива ячеек
deal
Обмен данными между любыми классами массивов
iscell
Истинно для массивов ячеек
num2cell
Преобразовать числовой масси в массив ячеек
МАССИВЫ СТРУКТУР
Структуры это массивы данных с поименованными «хранилищами» данных, называемыми полями. Поля структуры могут содержать данные любого типа. Например, одно поле может содержать текстовую строку, представляющую имя (name), второе поле может содержать скалярную переменную, являющуюся счетом за лечение (billing), третье может содержать матрицу результатов медицинских анализов (test) и так далее.
Как и обычным масивам данных, структурам присущи основные свойства массивов. Одна структура является структурой размера 1х1, точно так же как число 5 является числовым массивом размера 1х1. Вы можете строить структуры с лбой допустимой размерностью или формы, включая многомерные массивы структур.
Создание массивов структур
Имеется два следующих способа создания структур:
Путем использования операторов присваивания.
С использованием функции struct.
Создание массивов структур с применением операторов присваивания.
Вы можете построить простую структуру размера 1х1 путем прямого присваивания значений индивидуальным полям. MATLAB при этом автоматически конструирует соответствующую структуру. Например, создадим 1х1 структуру данных пациента лечебницы, показанную в начале данного раздела. Для этого следует ввести следующие записи:
patient является массивом, представляющим собой структуру с тремя полями. Для расшире-ния данного массива нужно просто добавить соответствующие индексы после имени струк-туры:
Структура patient имеет теперь размер [1 2]. Отметим, что если массив структур содержит более одного элемента, то MATLAB уже не выводит на экран содержание отдельных полей при вводе имени структуры. Взамен, на дисплей выдаются общая информация о содержимом структуры, то есть имена полей:
Patient
patient =
1x2 struct array with fields:
Name
Billing
Test
Для получения данной информации вы можете также использовать функцию fieldnames. Данная функция выдает массив ячеек содержащих названия полей в форме строки. Если вы расширяете структуру, MATLAB запалняет те поля, в которые вы не ввели данные, пустыми матрицами так, что:
Все структуры в массиве имеют одинаковое число полей.
Все соответствующие поля имеют одинаковые имена.
Например, при вводе
patient(3).name = 'Alan Johnson'
структура patient принимает размер 1х3. При это оба поля patient(3).billing и patient(3).test содержат пустые матрицы.
Внимание!Размерыданных в одноименныхполях могут быть различными. В нашем при-мере со структурой patient поля name могут иметь различную длину, поля test могут содер-жать массивы числовых данных различных размеров и так далее.