Ячейка по сравнению с массивами структур

Этот пример сравнивает ячейку и массивы структур, и показывает, как хранить данные в каждом типе массива. И ячейка и массивы структур позволяют вам хранить данные различных типов и размеров.

Массивы структур

Массивы структур содержат данные в полях, к которым вы получаете доступ по наименованию.

Например, сохраните записи о пациенте в массиве структур.

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

Figure contains an axes object. The axes object with title John Doe contains 3 objects of type bar.

Figure contains an axes object. The axes object with title Ann Lane contains 3 objects of type bar.

Массивы ячеек

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

Например, храните температурные данные для трех городов в зависимости от времени в массиве ячеек.

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 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)')

Figure contains an axes object. The axes object with title Temperature Trends for Different Locations contains 3 objects of type line.

Другие контейнерные массивы

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

Смотрите также

| | | | | |

Связанные примеры

Больше о