Этот пример сравнивает ячейку и массивы структур, и показывает, как хранить данные в каждом типе массива. И ячейка и массивы структур позволяют вам хранить данные различных типов и размеров.
Массивы структур содержат данные в полях, к которым вы получаете доступ по наименованию.
Например, сохраните терпеливые записи в массиве структур.
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=2×3 struct
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]}; temperature
temperature=5×2 cell
{'2009-12-31'} {1x3 double}
{'2010-04-03'} {1x3 double}
{'2010-06-20'} {1x3 double}
{'2010-09-15'} {1x3 double}
{'2010-12-09'} {1x3 double}
Постройте температуры для каждого города по дате.
allTemps = cell2mat(temperature(:,2)); dates = datetime(temperature(:,1)); plot(dates,allTemps) title('Temperature Trends for Different Locations') xlabel('Date') ylabel('Degrees (Fahrenheit)')
Массивы структур и массивы ячеек являются обычно используемыми контейнерами для того, чтобы хранить гетерогенные данные. Таблицы удобны для того, чтобы хранить неоднородные ориентированные на столбец или табличные данные. В качестве альтернативы используйте контейнеры карты или создайте ваш собственный класс.
cell
| cell2mat
| containers.Map
| datetime
| plot
| struct
| table