9

ハンドルを使用してプロット上のデータを操作します。

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

ただし、スクリプトが実際に終了する前に Figure が閉じられた場合、このようなことを行うとエラーが返されます。

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

h1操作を行う前に有効なハンドルかどうかを確認する方法はありますか?

4

2 に答える 2

13

関数を使用してishandle、グラフィックス ハンドルが有効かどうかを最初に確認できます。

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

アップデート:

新しいバージョンの MATLAB では、ハンドル オブジェクトは単なる数値ではなく実際のオブジェクトです。より良いオプションはisvalid、ハンドル オブジェクトのメソッドを使用することです。

if isvalid(h1)
  set(h1, 'Color', 'green');
end
于 2009-12-24T06:06:35.957 に答える
4

ishandle には、0 (= デスクトップ ハンドル) や 1 (= デフォルトで最初に開いている Figure) などの一般的な数値も受け入れるという欠点があることに注意してください。存在しないプロパティを設定しようとすると、引き続きエラーが表示されます。

このようなケースを処理するには、コードを例外処理ブロック内に配置するだけです。

try
   set(myHandle,propName,propValue);
catch
   % do something useful... (recreate the GUI?)
end
于 2009-12-24T11:13:46.493 に答える