При наличии данных, которые необходимо упорядочить по именам, для их хранения можно использовать структуры. Структуры хранят данные в контейнерах, называемых полями, доступ к которым можно получить по указанным именам. Точечная нотация используется для создания, назначения и доступа к данным в полях структуры. Если значение, сохраненное в поле, является массивом, то для доступа к элементам массива можно использовать индексирование массива. При сохранении нескольких структур в виде массива структуры можно использовать индексирование массивов и точечную нотацию для доступа к отдельным структурам и их полям.
Сначала создайте структуру с именем patient имеет поля, в которых хранятся данные о пациенте. На диаграмме показано, как структура хранит данные. Структура, подобная patient также упоминается как скалярная структура, поскольку переменная хранит одну структуру.

Использование точечной нотации для добавления полей name, billing, и test, назначение данных каждому полю. В этом примере синтаксис patient.name создает структуру и ее первое поле. Следующие команды добавляют дополнительные поля.
patient.name = 'John Doe';
patient.billing = 127;
patient.test = [79 75 73; 180 178 177.5; 220 210 205]patient = struct with fields:
name: 'John Doe'
billing: 127
test: [3x3 double]
После создания поля можно продолжать использовать точечную нотацию для доступа и изменения значения, которое оно хранит.
Например, измените значение billing поле.
patient.billing = 512.00
patient = struct with fields:
name: 'John Doe'
billing: 512
test: [3x3 double]
С помощью точечной нотации можно также получить доступ к значению любого поля. Например, создайте гистограмму значений в patient.test. Добавление заголовка с текстом в patient.name. Если поле хранит массив, то этот синтаксис возвращает весь массив.
bar(patient.test)
title("Test Results for " + patient.name)
Чтобы получить доступ к части массива, хранящейся в поле, добавьте индексы, соответствующие размеру и типу массива. Например, создайте гистограмму данных в одном столбце patient.test.
bar(patient.test(:,1))

Структурные массивы могут быть нескалярными. Можно создать массив структуры любого размера, если каждая структура в массиве имеет одинаковые поля.
Например, добавьте вторую структуру в patients наличие данных о втором пациенте. Также назначьте исходное значение 127 в billing поле первой структуры. Поскольку массив теперь имеет две структуры, необходимо получить доступ к первой структуре путем индексирования, как в patient(1).billing = 127.
patient(2).name = 'Ann Lane';
patient(2).billing = 28.50;
patient(2).test = [68 70 68; 118 118 119; 172 170 169];
patient(1).billing = 127patient=1×2 struct array with fields:
name
billing
test
В результате, patient представляет собой массив структуры «1 на 2» с содержимым, показанным на диаграмме.

Каждая запись пациента в массиве является структурой класса struct. Массив структур иногда называют массивом структуры. Однако термины struct array и structure array означают одно и то же. Как и другие массивы MATLAB ®, структурный массив может иметь любые размеры.
Структурный массив имеет следующие свойства:
Все структуры в массиве имеют одинаковое количество полей.
Все структуры имеют одинаковые имена полей.
Поля с одинаковыми именами в различных структурах могут содержать различные типы или размеры данных.
Если добавить новую структуру к массиву без указания всех его полей, то неопределенные поля будут содержать пустые массивы.
patient(3).name = 'New Name';
patient(3)ans = struct with fields:
name: 'New Name'
billing: []
test: []
Для индексирования в массив структуры используйте индексирование массива. Например, patient(2) возвращает вторую структуру.
patient(2)
ans = struct with fields:
name: 'Ann Lane'
billing: 28.5000
test: [3x3 double]
Для доступа к полю используйте индексацию массива и точечную нотацию. Например, возвращает значение billing поле для второго пациента.
patient(2).billing
ans = 28.5000
Можно также индексировать в массив, хранящийся в поле. Создание гистограммы, отображающей только первые два столбца patient(2).test.
bar(patient(2).test(:,[1 2]))

Примечание
Индексировать в часть поля можно только при ссылке на один элемент структурного массива. MATLAB ® не поддерживает такие операторы, какpatient(1:2).test(1:2,2:3), которые пытаются индексировать в поле для нескольких элементов массива структуры. Вместо этого используйте arrayfun функция.
fieldnames | isfield | struct