Доступ к данным в массиве структур

Этот пример показывает, как получить доступ к содержимому массива структур. Чтобы запустить код в этом примере, загрузите несколько переменных в скалярную структуру (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), которые пытаются индексировать в поле для нескольких элементов структуры.

Похожие темы