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

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

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

Когда вы создаете массив структур, 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

См. также

Похожие темы