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