exponenta event banner

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

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