图形句柄现在是对象,而不是double
图形句柄是对象句柄
在以前的版本中,图形句柄是类型的数字句柄双
。从R2014b开始,图形句柄是各种类型的对象句柄,具体取决于图形对象的类。图形对象现在的行为与其他MATLAB类似®对象。
大多数为数字句柄编写的代码仍然适用于对象句柄。例如,您可以访问图形对象属性,并且可以将图形对象组合成数组,即使这些对象属于不同的类。但是,您不应该执行假设或要求图形句柄为数值的操作,例如:
对句柄执行算术运算
直接在逻辑语句中使用句柄,而不转换为逻辑值
在逻辑语句中依赖根对象的数值(0)或数字句柄(整数)
将句柄与数字数组中的数据组合
使用任何依赖于句柄为数字的程序逻辑
将句柄转换为字符向量或在字符向量操作中使用句柄
访问图形对象的属性
有两种方法可以访问具有对象句柄的图形对象的属性:
使用点符号来指代一个特定的对象和属性。使用点表示法时,属性名区分大小写。例如,此代码设置
颜色
一行的属性“红色”
。H = plot(1:10);h.Color =“红色”;
使用
集
和得到
函数,用于访问对象数组的属性。例如,此代码设置线宽
属性用于多行。H = plot(rand(4));集(h,“线宽”2);
图形句柄数组
从R2014b开始,使用gobject
函数,而不是0
或的
函数。Preallocating与0
或的
仍然运行没有错误,但可能很慢。
的语法gobject
和for的语法一样吗的
和0
。
H = objects(3,1);% preallocateH(1) =图;H (2) = plot(1:10);H (3) = gca;
类(h)
ans = matlab.graphics.Graphics
测试图形句柄的有效性
从R2014b开始,使用isgraphics
函数而不是ishghandle
。
X = 1:10;Y = sin(x);P = plot(x,y);Ax = gca;isgraphics ((p, ax))
Ans = 1 1
通过整数句柄引用数字
从R2014b开始,您可以通过其对象句柄或整数句柄引用图形。整数句柄是new中的值数量
图形的性质。
H =图;%对象句柄fignum = h;%整数句柄
fignum
,是有效的数字句柄。isgraphics (fignum)%测试句柄有效性
Ans = 1
删除多个图形对象
从R2014b开始删除
函数只接受一个输入参数。要删除多个图形对象,请向函数传递单个句柄数组,而不是使用多个参数。
H1 =注释(“行”);H2 =注释(“椭圆”);H3 =注释“矩形”);删除((h1, h2, h3))
带有图形句柄的逻辑表达式
从R2014b开始,您不能在逻辑表达式中使用图形句柄或依赖MATLAB返回非零值或空双精度[]
。使用以下函数isempty
,isgraphics
,isequal
代替。
要确定是否存在现有图形,请使用
isempty
。新大的
命令引用根对象。如果~ isempty (get(大的,“CurrentFigure”) disp (“有现成的数据。”)其他的disp (没有现成的数据。)结束
若要确定是否有带有特定标记的图形对象,请使用
isempty
。如果~ isempty (findobj (“标签”,“myFigures”) disp (“有些东西有这个标签。”)其他的disp (“没有带这个标签的物品。”)结束
要确定句柄是否为有效的图形句柄,请使用
isgraphics
这个物体类型
。如果isgraphics (h,“图”) disp (“这是一个有效的数字句柄。”)其他的disp (“这不是一个有效的数字句柄。”)结束
要确定句柄是否是根句柄,请使用new
大的
命令。如果isequal (h, groot) disp (“h是根句柄”)其他的disp (“h不是根句柄”)结束
转换图形句柄的单元格数组
从R2014b开始,您不能使用cell2mat
在图形句柄的单元格数组上创建数字数组。而是从单元格数组创建一个对象数组。
P = plot(magic(3));Par = get(p,“父”);Objarray = [par{:}]';谁objarray
名称大小字节数类属性objarray 3x1 128 matlab.graphics.axis.Axes
测试图形处理的平等性
从R2014b开始,使用==
或isequal
。
要确定句柄是否引用同一对象,因此是否为同一句柄,请使用
==
。P1 = plot(1:10);P2 = p1;P2 == p1
Ans = 1
要确定句柄是否引用具有相同属性值的同一类的对象,但不一定是同一对象,请使用
isequal
。L1 = line;L2 = line;isequal (l1, l2)
Ans = 1
从cellfun和arrayfun函数返回图形对象
要使用cellfun
和arrayfun
函数返回图形对象,设置UniformOutput
来假
。
例如:
T = num2str(rand);Fh = @(t) text(1,1,t);= cellfun(fh,{t},“UniformOutput”、假);
保存图形对象
从R2014b开始,如果在mat文件中保存图形对象,使用保存
函数,则mat文件包含重新生成对象所需的所有信息。在以前的版本中,保存
函数将对象存储为双精度类型,并且在加载mat文件时无法重新生成对象。
避免使用保存
函数。使用保存
在R2014b或更高版本中保存图形使mat文件在早期版本的MATLAB中无法访问。如果你使用保存
若要保存图形,则该功能将显示警告消息。使用savefig
函数来代替。
写作mex files
如果编写mex文件或构建引擎应用程序,则mexGet
和mexSet
函数不能在图形对象句柄上工作。使用mxGetProperty
和mxSetProperty
函数在C/ c++或Fortran矩阵库中代替。