2016-12-09 6 views
0

このクラスでは、figオブジェクトをそのクラスで使用可能な固有のプロパティを持つようにするにはどうすればよいですか(たとえば、my_function)。Matlabのクラス内でオブジェクトにアクセスする方法を教えてください。

classdef Test 
    properties 
     a 
     b 
    end 

    methods 
     function obj = Test(a, b) 
      obj.a = a; 
      obj.b = b; 
     end 
     function [] = my_function(obj) 
      fig.Name %%% here fig object is needed 
      disp('done!') 
     end 
     function [fig] = my_figure(obj) 
      fig = figure(); 
     end 
    end 
end 

答えて

1

あなたは、クラスのプロパティとしてfig格納する必要があり、その後my_functionの中から、あなたは現在のインスタンスのfigプロパティにアクセスできるようになります。注意点として、あなたが参照することによって周りのクラスのインスタンスを渡すことができるようにしたい場合、あなたはMATLABのhandleクラスをサブクラス化したいと思う:

classdef Test < handle 
    properties 
     fig   % Setup a property to hold the handle to the figure 
     a 
     b 
    end 

    methods 
     function obj = Test(a, b) 
      obj.a = a; 
      obj.b = b; 
     end 

     function [] = my_function(obj) 
      % Access and modify the figure handle as needed 
      obj.fig.Name = 'Name'; 
      disp('done!') 
     end 

     function [fig] = my_figure(obj) 
      fig = figure(); 

      % Store the handle in the "fig" property of the class 
      obj.fig = fig; 
     end 
    end 
end 
+0

おかげSuever、実際に私はそれをしなかったが、それはしません'fig'オブジェクトのプロパティを返します。おそらく' Name'は良い例ではありません。もし 'obj.fig.CurrentPoint'を試しても返り値がないなら、どこか間違っていますか? – Hamidreza

+0

@ハミドレザ「帰りはありません」とはどういう意味ですか?実際にfigureを作成するには、まず 'my_figure'を呼び出していますか? – Suever

+0

はい、あります。つまり、Figure上のマウスカーソルポイントを返すはずの 'obj.fig.CurrentPoint'のような、' figure'オブジェクトの独自のプロパティを取得することを意味しました。これは動作しません。 – Hamidreza

関連する問題