Способы организовать данные в массивах структур

Существует по крайней мере два способа, которыми можно организовать данные в массиве структур: плоская организация и поэлементно организация. Метод, что лучшие подгонки ваши данные зависят от того, как вы планируете получить доступ к данным, и, для очень больших наборов данных, есть ли у вас ограничения системной памяти.

Плоская организация облегчает доступ ко всем значениям в поле. Поэлементно организация облегчает доступ ко всей информации, связанной с одним элементом или записью. Следующие разделы включают пример каждого типа организации:

Когда вы создаете массив структур, MATLAB® хранит информацию о каждом элементе и поле в заголовке массивов. В результате структуры с большим количеством элементов и полей требуют большей памяти, чем более простые структуры, которые содержат те же данные. Для получения дополнительной информации о требованиях к памяти для массивов смотрите, Как MATLAB Выделяет Память.

Плоская организация

Рассмотрите изображение RGB с тремя массивами, соответствующими значениям интенсивности цвета.

Если у вас есть массивы RED, GREEN и BLUE в вашей рабочей области, то эти команды создают скалярную структуру под названием img, который использует плоскую организацию:

img.red = RED;
img.green = GREEN;
img.blue = BLUE;

Плоская организация позволяет вам легко извлекать целые плоскости изображения для отображения, фильтрации или другой обработки. Например, умножьте красные значения интенсивности на 0.9:

adjustedRed = .9 * img.red;

Если у вас есть повторные изображения, можно добавить их в структуру img, так, чтобы каждый элемент img(1),...,img(n) содержал целое изображение. Для примера, который добавляет элементы в структуру, смотрите следующий раздел.

Поэлементно организация

Рассмотрите базу данных с терпеливой информацией. Каждая запись содержит данные для имени пациента, результатов испытаний, и тарифицирующий сумму.

Эти операторы создают элемент в массиве структур под названием patient:

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

Дополнительные пациенты соответствуют новым элементам в структуре. Например, добавьте элемент для второго пациента:

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

Поэлементно организация поддерживает простую индексацию, чтобы получить доступ к данным для конкретного пациента. Например, найдите среднее значение результатов испытаний первого пациента, вычислив строками (размерность 2), а не столбцами:

aveResultsDoe = mean(patient(1).test,2)

Этот код возвращается

aveResultsDoe =
   75.6667
  178.5000
  212.0000

Для получения информации об обработке данных больше чем от одного элемента за один раз, см. Доступ к данным в Массиве структур.