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