Main Content

图形数组

图形数组可以包含任何图形对象的句柄。例如,调用 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