Этот пример показывает, как получить доступ к содержимому массива структур. Чтобы запустить код в этом примере, загрузите несколько переменных в скалярную структуру (1 на 1) под названием S
.
S = load('clown.mat')
S = struct with fields:
X: [200x320 double]
map: [81x3 double]
caption: [2x1 char]
Переменные из файла (X
, caption
и map
) являются теперь полями в struct.
Доступ к данным с помощью записи через точку формы structName.fieldName
. Например, передайте числовые данные в поле X
к функции image
:
image(S.X) colormap(S.map)
К части доступа поля добавьте индексы как подходящие для размера и типа данных в поле. Например, передайте левый верхний угол X
к функции image
:
upperLeft = S.X(1:50,1:80); image(upperLeft);
Если конкретное поле содержит массив ячеек, используйте фигурные скобки, чтобы получить доступ к данным, таким как S.cellField{1:50,1:80}
.
Данные в нескалярных массивах структур
Создайте нескалярный массив путем загрузки данных из файла mandrill.mat
во второй элемент массива S
:
S(2) = load('mandrill.mat')
Каждый элемент массива структур должен иметь те же поля. И clown.mat
и mandrill.mat
содержат переменные X
, map
и caption
.
S
1 2 массив.
S = 1×2 struct array with fields: X map caption
Для нескалярных структур синтаксисом для доступа к конкретному полю является structName(indices).fieldName
. Вновь отобразите изображение клоуна, задав индекс для struct клоуна (1
):
image(S(1).X) colormap(S(1).map)
Добавьте индексы, чтобы выбрать и вновь отобразить левый верхний угол полевого содержимого:
upperLeft = S(1).X(1:50,1:80); image(upperLeft)
Можно индексировать в часть поля только, когда вы обращаетесь к одному элементу массива структур. MATLAB® не поддерживает операторы, такие как S(1:2).X(1:50,1:80)
, которые пытаются индексировать в поле для нескольких элементов структуры.