В этом примере сравниваются массивы ячеек и структуры и показано, как хранить данные в каждом типе массива. Массивы ячеек и структур позволяют хранить данные различных типов и размеров.
Структурные массивы содержат данные в полях, доступ к которым осуществляется по имени.
Например, сохранять записи пациентов в структурном массиве.
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]; patient
patient=1×2 struct array with fields:
name
billing
test
Создайте гистограмму результатов теста для каждого пациента.
numPatients = numel(patient); for p = 1:numPatients figure bar(patient(p).test) title(patient(p).name) xlabel('Test') ylabel('Result') end


Массивы ячеек содержат данные в ячейках, доступ к которым осуществляется путем числового индексирования. Обычные применения массивов ячеек включают в себя хранение отдельных фрагментов текста и хранение гетерогенных данных из электронных таблиц.
Например, данные о температуре для трех городов с течением времени хранятся в массиве ячеек.
temperature(1,:) = {'2009-12-31', [45, 49, 0]};
temperature(2,:) = {'2010-04-03', [54, 68, 21]};
temperature(3,:) = {'2010-06-20', [72, 85, 53]};
temperature(4,:) = {'2010-09-15', [63, 81, 56]};
temperature(5,:) = {'2010-12-09', [38, 54, 18]};
temperaturetemperature=5×2 cell array
{'2009-12-31'} {[ 45 49 0]}
{'2010-04-03'} {[54 68 21]}
{'2010-06-20'} {[72 85 53]}
{'2010-09-15'} {[63 81 56]}
{'2010-12-09'} {[38 54 18]}
Постройте график температур для каждого города по дате.
allTemps = cell2mat(temperature(:,2)); dates = datetime(temperature(:,1)); plot(dates,allTemps) title('Temperature Trends for Different Locations') xlabel('Date') ylabel('Degrees (Fahrenheit)')

Массивы struct и cell являются наиболее часто используемыми контейнерами для хранения гетерогенных данных. Таблицы удобны для хранения разнородных колонноориентированных или табличных данных. Можно также использовать контейнеры карт или создать собственный класс.
cell | cell2mat | containers.Map | datetime | plot | struct | table