Существует по крайней мере два способа, которыми можно организовать данные в массиве структур: плоская организация и поэлементно организация. Метод, что лучшие подгонки ваши данные зависят от того, как вы планируете получить доступ к данным, и, для очень больших наборов данных, есть ли у вас ограничения системной памяти.
Плоская организация облегчает доступ ко всем значениям в поле. Поэлементно организация облегчает доступ ко всей информации, связанной с одним элементом или записью. Следующие разделы включают пример каждого типа организации:
Когда вы создаете массив структур, 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
Для получения информации об обработке данных больше чем от одного элемента за один раз, см. Доступ к данным в Массиве структур.