2011-11-11 19 views
8

Supponiamo che io ho la seguente classe che calcola la soluzione dell'equazione quadratica:MATLAB - proprietà dipendenti e calcolo

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 

Ora supponiamo che io eseguire i seguenti comandi:

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

A questo punto, quadcalc.x = [-2 -2]. Supponiamo che io chiami più volte quadcalc.x senza modificare le altre proprietà, ad esempio quadcalc.x = [-2 -2] ogni volta che chiedo questa proprietà. quadcalc.xricalcolato ogni volta o si "ricorda" [-2 -2]?

risposta

6

Sì, x viene ricalcolato ogni volta. Questo è il tipo di avere una proprietà dipendente, poiché garantisce che il risultato in x sia sempre aggiornato.

Se si desidera rendere x una "proprietà dipendente pigro", si consiglia di esaminare i suggerimenti nella mia risposta a this question.

+1

Supponiamo di aver usato 'x' in altre proprietà dipendenti; 'x' dovrebbe anche essere ricalcolato per ogni altra proprietà dipendente, sì? –

+0

@ strictrude27: Sì. – Jonas

Problemi correlati