如何检查MATLAB句柄是否有效?

dzh*_*lil 9 graphics matlab handle

我使用它的句柄操作绘图上的数据:

x = 1:10; y = sin(x);
h1 = line(x,y);
Run Code Online (Sandbox Code Playgroud)

但是,如果在脚本实际终止之前图形被关闭,则执行此类操作会返回错误.

>>set(h1,'Color','green') % line is green
??? Error using ==> set
Invalid handle object.
Run Code Online (Sandbox Code Playgroud)

h1在使用它进行任何操作之前,有没有办法检查是否是有效的句柄?

gno*_*ice 13

您可以使用该ishandle函数首先检查图形句柄是否有效:

if ishandle(h1)
  set(h1, 'Color', 'green');
end
Run Code Online (Sandbox Code Playgroud)

更新:

对于较新版本的MATLAB,句柄对象是实际对象,而不仅仅是数值.更好的选择是使用isvalid方法处理句柄对象:

if isvalid(h1)
  set(h1, 'Color', 'green');
end
Run Code Online (Sandbox Code Playgroud)

  • 如果你知道你正在寻找什么类型的对象,你可以明确地测试它.替换if ishandle(h1),例如if ishandle(h1)&& strcmp(get(h1,'type'),'line') (3认同)