オブジェクトのハンドルを取得するには、下記のような方法があります。
1.カレントオブジェクトのハンドルを取得する
画面上に表示されている各オブジェクトは、マウスでクリックするとカレントオブジェクトとしてMATLABに認識されます。カレントオブジェクトのハンドルを取得するには、下記のコマンドを使います。
h_o = gco; % カレントオブジェクトのハンドルを取得
h_f = gcf; % カレント Figure のハンドルを取得
h_a = gca; % カレント Axes のハンドルを取得
カレントの Figure, Axesオブジェクトのハンドルを取得するには、それぞれ gcf, gca コマンドを使用することができます。
2. オブジェクト作成時に取得する
グラフィックス関数には、出力引数としてその時に作成されるオブジェクトのハンドルを出力するものがあります。このような関数に出力引数を指定して実行すると、オブジェクトハンドルを取得することができます。
h = plot(x,y); % plotコマンドによって描かれた Lineオブジェクトのハンドルを取得
h = mesh(x,y,z); % meshコマンドによって描かれた Surfaceオブジェクトのハンドルを取得
3. findobj コマンドを使う
findobj コマンドは、特定のプロパティ値を持つオブジェクトのハンドルを取得します。
既存の Figure がある状態で、特定のオブジェクトを検出したい場合に使用することが可能です。
以下のコマンドでは、カレントFigure 上にあるLineオブジェクトのハンドルを取得します。
h = findobj(gcf,'Type','Line');
4. 階層構造を利用する
階層構造の上下関係を示すプロパティの値は、その親(または子)オブジェクトのハンドルになります。
例えば、下記のように実行するとLineオブジェクトのハンドルを取得することができます。
plot(x,y)
h=get(gca,'children');