2011-11-11 7 views
8

私は二次方程式の解を算出し、以下のクラスがあるとします。MATLAB - 依存特性と計算

classdef MyClass < handle 
    properties 
     a 
     b 
     c 
    end 
    properties (Dependent = true) 
     x 
    end 

    methods 
     function x = get.x(obj) 
      discriminant = sqrt(obj.b^2 - 4*obj.a*obj.c); 
      x(1) = (-obj.b + discriminant)/(2*obj.a); 
      x(2) = (-obj.b - discriminant)/(2*obj.a); 
     end 
    end 
end 

は今、私は次のコマンドを実行するとします。この時点で

>>quadcalc = MyClass; 
>>quadcalc.a = 1; 
>>quadcalc.b = 4; 
>>quadcalc.c = 4; 

quadcalc.x = [-2 -2]。他のプロパティを調整せずにquadcalc.xを何度も呼び出すと、このプロパティを要求するたびにquadcalc.x = [-2 -2]と呼びます。 quadcalc.xは毎回を再計算しますか、それとも[-2 -2]を覚えていますか?

答えて

6

はい、xは毎回再計算されます。これは、xの結果が常に最新であることを保証するので、従属プロパティを持つことの一種のポイントです。

xを「遅延依存プロパティ」にしたい場合は、私の答えの中のthis questionの提案を見てください。

+1

他の依存プロパティで 'x'を使用したとします。 'x'は他のすべての従属プロパティに対しても再計算されるでしょう、はい? –

+0

@ strictlyrude27:はい。 – Jonas