exponenta event banner

Способы упорядочения данных в структурных массивах

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

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

При создании структурного массива 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

См. также

Связанные темы