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

Графические массивы могут содержать указатели любых графических объектов. Например, этот вызов 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