How can I check if a MATLAB handle is valid?

D R picture D R · Dec 24, 2009 · Viewed 11.6k times · Source

I manipulate data on a plot using its handle:

x = 1:10; y = sin(x);
h1 = line(x,y);

However, if the figure gets closed before the script actually terminates, doing something like this returns an error.

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

Is there a way to check if h1 is a valid handle before doing any manipulations with it?

Answer

gnovice picture gnovice · Dec 24, 2009

You can use the ishandle function to check first if a graphics handle is valid:

if ishandle(h1)
  set(h1, 'Color', 'green');
end

UPDATE:

For newer versions of MATLAB, handle objects are actual objects, not just numeric values. The better option is to use the isvalid method for handle objects:

if isvalid(h1)
  set(h1, 'Color', 'green');
end