Графические массивы

Графические массивы могут содержать указатели на любые графические объекты. Для примера этот вызов на plot функция возвращает массив, содержащий пять указателей на объекты линий:

y = rand(20,5);
h = plot(y)
h = 

  5x1 Line array:

  Line
  Line
  Line
  Line
  Line

Этот массив содержит только указатели для объектов линий. Однако графические массивы могут содержать более одного типа графического объекта. То есть графические массивы могут быть неоднородными.

Например, можно объединить указатели на рисунок, оси и объекты линий в один массив harray:

hf = figure;
ha = axes;
hl = plot(1:10);
harray = [hf,ha,hl]
harray = 

  1x3 graphics array:

    Figure    Axes      Line

Графические массивы следуют тем же правилам, что и любой MATLAB® массив. Для примера размерности элемента массива должны совпадать. В этом коде график возвращает массив линий 5 на 1:

hf = figure;
ha = axes;
hl = plot(rand(5));
harray = [hf,ha,hl];
Error using horzcat
Dimensions of matrices being concatenated are not consistent.

Чтобы сформировать массив, вы должны транспонировать hl:

harray = [hf,ha,hl']
harray = 

  1x7 graphics array:

   Figure    Axes      Line      Line      Line      Line      Line

Вы не можете конкатенировать числовые данные с указателями на объекты, за исключением уникального идентификатора, заданного рисунком Number свойство. Например, если существует существующий рисунок с ее Number свойство установлено в 1, вы можете обратиться к этому рисунку по этому номеру:

figure(1)
aHandle = axes;
[aHandle,1]
ans = 

  1x2 graphics array:

    Axes      Figure

Те же правила для формирования массива применяются к индексированному назначению. Например, можно создать массив указателей с for цикл:

harray = gobjects(1,7);
hf = figure;
ha = axes;
hl = plot(rand(5));
harray(1) = hf;
harray(2) = ha;
for k = 1:length(hl)
   harray(k+2) = hl(k);
end