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