где аргументами являются имена полей и их соответствующие значения. Значением поля мо-жет быть или одно значение, представленное любой допустимой конструкцией в MATLAB-е, или массив ячеек данных (массивы ячеек рассмотрены в следующем разделе). Все значения полей в списке аргументов должны иметь одинаковый вид (единственное значение или мас-сив ячеек).
Вы можете использовать различные методы для задания массива структур. Эти методы отличаются способом инициализации полей структуры. В качестве примера расмотрим зада-ние структуры размера 1х3 с именем weather (погода), имеющую поля temp (температура)
и rainfall (дождевые осадки). Три различные способа задания такой структуры даны в приведенной ниже таблице.
Метод
Синтаксис
Задание
Функция struct
weather(3) = struct('temp',72,'rainfall',0.0);
Структура weather(3)инициализируется с указан-ными значениями полей. По-ля остальных двух структур в массиве, weather(1) и weather(2),содержат в качес-тве данных пустые матрицы.
Структуры в массивеweatherинициализируются с разными значениями полей, заданных массивом ячеек.
Обращение к данным в массивах структур.
Используя индексацию массива структур, можно осуществить обращение к данным любого поля или любого элемента поля в массиве структуры. Аналогичным образом, вы можете за-дать значение любого поля или элемента поля структуры. В качестве примера, используемо-го в данном разделе, рассмотрим структуру, представленную на приведенном ниже рисунке.
Вы можете обратиться к подмассивам путем дабавления стандартной индексации к имени массива структур. Например, следующая запись приводит к структуре размера 1х2
mypatients = patient(1:2)
1x2 struct array with fields:
Name
Billing
Test
Первая структура в массиве mypatients совпадает с первой структурой в массиве patient:
Mypatients(1)
ans =
name: 'John Doe'
Billing: 127
test: [3x3 double].
Для обращения к полю определенной структуры, нужно добавить точку (.) после имени стру-ктуры, с указанием далее имени поля:
str = patient(2) . name
str =
Ann Lane
Для обращения к элементам внутри полей, следует добавить требуемые индексы к имени поля. Если поле содержит числовой массив, нужно использовать индексация цифровых массивов. Если поле содержит массив ячеек, используйте соответствующую индексацию ячеек и так далее. Например,
test2b = patient(3).test(2,2)
test2b =
Аналогичную форму записи следует использовать и для задания значений переменных внутри поля, например,
patient(3).test(2,2) = 7
Вы можете также одновременно извлечь данные одноименных полей многомерной структу-ры. Например, запись ниже создает вектор 1х3, содержащий все значения счетов полей billing fields.
bills = [patient.billing]
bills =
127.0000 28.5000 504.7000
Аналогично, вы можете создать массив ячеек, содержащий данные температур test для пер-вых двух структур.