MATLAB.Exponenta
–Û·Ë͇ Matlab&Toolboxes

MATLAB

В.Г.Потемкин "Введение в Matlab" (v 5.3)
Глава 6. Массивы записей

  В оглавление книги \ К следующему разделу \ К предыдущему разделу \ Предметный указатель

6.1. Построение структур

Структуру можно построить двумя способами:

  • с использованием операторов присваивания;
  • с использованием функции struct.

Применение оператора присваивания. Для того чтобы сформировать простейшую структуру размера 1х1, необходимо присвоить данные соответствующим полям. Cистема MATLAB автоматически формирует структуру по мере ее заполнения.

Пример.
Сформируем показанную на рис. 6.1 структуру patient размера 1х1, состоящую из следующих полей:

            patient.name = 'John Doe';
             patient.billing = 127.00;
             patient.test = [79 75 73; 180 178 177.5; 220 210 205];

Теперь введя в командной строке имя структуры

            patient,

получим описание записи

             patient =
                 name: 'John Doe'
               billing: 127
                  test: [3x3 double]

Таким образом, patient - это пока массив из одной записи с тремя полями. Для того чтобы расширить его, достаточно добавить индекс в имени структуры.

Пример.
Создадим вторую запись в структуре patient:

              patient(2).name = 'Ann Lane';
               patient(2).billing = 28.50;
               patient(2).test = [68 70 68; 118 118 119; 172 170 169];

Теперь структура patient имеет размер 1х2. Заметим, что когда структура содержит более одной записи, при ее запросе, содержимое полей не выводится, а выводится только обобщенная информация о структуре в следующем виде:

              patient
               patient =
              1x2 struct array with fields:
                    name
                    billing
                    test

Для получения этой же информации можно использовать функцию fieldnames, которая возвращает массив ячеек, содержащий строки с именами полей.

При расширении структуры система MATLAB заполняет неприсвоенные поля пустыми массивами и, как следствие, по отношению к структуре выполняются следующие условия:

  • все записи структуры имеют одинаковое количество полей;
  • все имена полей одинаковы.

Пример.
При вводе строки

              patient(3).name = 'Alan Johnson'
               patient =
                       1x3 struct array with fields:
                              name
                              billing
                              test

массив patient увеличивает размер до 1?3. Поля patient(3).billing и patient(3).test содержат пустые матрицы.

Размеры полей могут быть разными для разных записей. Для структуры patient поле name может иметь различные длины, поля test могут содержать массивы разных размеров и так далее.

Применение функции struct. Функция struct имеет следующий синтаксис:

str_array = struct('<имя_поля1>’,'<значение>', '<имя_поля2>','<значение>', ...).

Пример.
Воспользуемся функцией struct, чтобы создать структуру patient размера 1x1:

           patient = struct('name',' John Doe', 'billing', 127.00,....
                             'test', [79 75 73; 180 178 177.5; 220 210 205])

            patient =
                 name: ' John Doe'
                 billing: 127
                      test: [3x3 double]

Функция struct позволяет сформировать структуру с указанными значениями полей. То есть все поля name будут содержать строку 'John Doe', все поля billing - значение 127.00 и т. д. В дальнейшем можно изменить значения полей, используя операторы присваивания.

  В оглавление книги \ К следующему разделу \ К предыдущему разделу \ Предметный указатель

 


Поиск по сайту:

Система Orphus

Яндекс.Метрика