В этом примере показано, как получить доступ к содержимому массива структур. Чтобы запустить код в этом примере, загрузите несколько переменных в структуру под названием S
.
Во-первых, загрузите данные из flujet.mat
в скалярную структуру S
. Файл flujet.mat
содержит изображение симуляции астрофизической струйной турбулентности испытания.
S = load('flujet.mat')
S = struct with fields:
X: [400x300 double]
map: [64x3 double]
caption: [2x32 char]
Переменные из файла (X
, caption
, и map
) теперь поля в структуре.
Доступ к данным с помощью записи через точку формы structName.fieldName
. Например, передайте числовые данные в поле X
к image
функция:
image(S.X) colormap(S.map)
К части доступа поля добавьте индексы как подходящие для размера и типа данных в поле. Например, передайте раздел левого центра X
к image
функция.
centerLeft = S.X(150:250,1:50); image(centerLeft)
Если поле содержит массив ячеек, используйте фигурные скобки, чтобы получить доступ к данным, таким как S.cellField{1:50,1:80}
.
Создайте нескалярный массив путем загрузки данных из файла cape.mat
во второй элемент массива S
. Файл cape.mat
содержит изображение Кейп-Кода, Массачусетс.
Каждый элемент массива структур должен иметь те же поля. Оба flujet.mat
и cape.mat
содержите переменные X
, map
, и caption
S
1 2 массив.
S(2) = load('cape.mat')
S=1×2 struct array with fields:
X
map
caption
Для нескалярных структур синтаксисом для доступа к полю является structName(indices).fieldName
. Отобразите изображение Кейп-Кода, задав 2
как индекс в S
.
image(S(2).X) colormap(S(2).map)
Добавьте индексы, чтобы выбрать и отобразить небольшой раздел S(2).X
.
capeSection = S(2).X(200:300,150:250); image(capeSection)
Примечание
Можно индексировать в часть поля только, когда вы обращаетесь к одному элементу массива структур. MATLAB® не поддерживает операторы, такие как S(1:2).X(1:50,1:80)
, которые пытаются индексировать в поле для нескольких элементов структуры.