Передайте содержимое массивов ячеек в функции

Эти примеры показывают несколько способов передать данные из массива ячеек в функцию MATLAB ®, которая не распознает массивы ячеек как входы.

Передайте содержимое одной камеры путем индексации фигурными скобками, {}

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

randCell = {'Random Data', rand(20,2)};
plot(randCell{1,2})
title(randCell{1,1})

Figure contains an axes. The axes with title Random Data contains 2 objects of type line.

Постройте график только первого столбца данных путем индексации далее в содержимое (многоуровневая индексация).

figure
plot(randCell{1,2}(:,1))
title('First Column of Data')

Figure contains an axes. The axes with title First Column of Data contains an object of type line.

Объедините числовые данные из нескольких камер с помощью cell2mat

Этот пример создает массив ячеек 5 на 2, который хранит данные о температуре для трех городов и строит графики температур для каждого города по дате.

temperature(1,:) = {'2020-01-01', [45, 49, 0]};
temperature(2,:) = {'2020-04-03', [54, 68, 21]};
temperature(3,:) = {'2020-06-20', [72, 85, 53]};
temperature(4,:) = {'2020-09-15', [63, 81, 56]};
temperature(5,:) = {'2020-12-31', [38, 54, 18]};

allTemps = cell2mat(temperature(:,2));
dates = datetime(temperature(:,1));

plot(dates, allTemps)

Figure contains an axes. The axes contains 3 objects of type line.

Передайте содержимое нескольких камер в качестве списка разделенных запятыми для функции

Этот пример строит графики X против Y , и применяет стили линии из массива ячеек 2 на 3 C.

X = -pi:pi/10:pi;
Y = tan(sin(X)) - sin(tan(X));

C(:,1) = {'LineWidth'; 2};
C(:,2) = {'MarkerEdgeColor'; 'k'};
C(:,3) = {'MarkerFaceColor'; 'g'};

plot(X, Y, '--rs', C{:})

Figure contains an axes. The axes contains an object of type line.

Похожие темы