Структуры
Массив записей – это новый тип массива, в котором разрешается накапливать в виде записей разнородные данные. Отличительная особенность такого массива – наличие именованных полей.
MATLAB поддерживает следующие функции при работе с массивами записей:
-
Функция
Описание
struct
Создать массив записей
fieldnames
Получить имена полей
getfield
Получить содержимое поля
setfield
Установить содержимое поля
rmfield
Удалить поле
isfield
Истинно, если это поле массива записей
isstruct
Истинно, если это массив записей
Пользователь может расширить состав функций, создавая специальные М-файлы для обработки конкретных данных.
Определение структуры: Структура – это массив записей с именованными полями, предназначенными для хранения данных, при этом поле может содержать данные любого типа: векторы, матрицы, массивы и структуры.
Структуру можно построить двумя способами:
а) используя операторы присваивания;
б) используя функцию struct.
Для того чтобы сформировать простейшую структуру размера
1Х1, необходимо присвоить данные соответствующим полям. Систе- ма matlab автоматически формирует структуру по мере ее запол- нения.
Функция struct имеет следующий синтаксис:
str_array=struct('<имя_поля1>’,'<значение1>','<имя_поля2>','
<значение2>',...).
Используя индексацию, можно легко определить значение любого поля или элемента структуры. Точно также можно присвоить значение любому полю или элементу поля. Чтобы обратиться к некоторому полю, необходимо ввести точку (.) после имени структуры, за которым должно следовать имя поля.
Непосредственная индексация – это, как правило, наиболее эффективный способ определить или присвоить значение полю записи. Однако если использовалась функция fieldnames и известно имя поля, то можно воспользоваться функциями setfield и getfield.
Функция getfield позволяет определить значение поля или элемента поля:
f = getfield(array, {array_index}, 'field', {field_index})
где аргументы array_index и field_index задают индексы для структуры и поля; они не являются обязательными для структуры размера 1х1. Результат применения функции getfield соответствует элементу следующей структуры
f = array(array_index).field(field_index);
По аналогии функция setfield позволяет присваивать значения полям, используя обращение следующего вида:
f = setfield(array, {array_index}, 'field', {field_index}, value)
Выполнение операций с полями и элементами полей абсолютно аналогично операциям с элементами обычного числового массива. В обоих случаях надо использовать индексные выражения.
Для обработки структур со специфической архитектурой полей могут понадобиться специальные функции обработки полей и их элементов. При написании М-файлов для обработки структур необходимо помнить, что пользователь должен сам выполнить анализ возникновения возможных ошибок, связанных с обработкой полей.
Массивы ячеек
В систему MATLAB включен специальный тип массивов ячеек, элементы которого сами, в свою очередь, являются массивами. Имеются следующие функции для работы с массивами ячеек:
-
Функция
Описание
cell
Создать массив ячеек
celldisp
Показать содержимое массива ячеек
cellplot
Показать графическую структуру массива ячеек
num2cell
Преобразовать числовой массив в массив ячеек
deal
Обмен данными между любыми классами массивов
cell2struct
Преобразовать массив ячеек в структуру
struct2cell
Преобразовать структуру в массив ячеек
iscell
Истинно, если это массив ячеек
Пользователь может расширить состав этих функций, создавая специальные М-файлы для обработки конкретных данных.