2012-01-26 10 views
5

Nie mogę wymyślić, jak wykonać tak prostą czynność, jak definiowanie stałych za pomocą innych.Jak zdefiniować stałą przy użyciu innej w klasie Matlab

Na przykład, obojętne przykład:

classdef DummyClass < handle 
    properties (Constant) 
     NB_SECONDS_IN_MINUTE = 60; 
     NB_MINUTES_IN_HOUR = 60; 

     NB_SECONDS_IN_HOUR = NB_SECONDS_IN_MINUTE * NB_MINUTES_IN_HOUR; 
    end 
end 

to nie działa :(

Następnie próbowałem z tej linii:

NB_SECONDS_IN_HOUR = DummyClass.NB_SECONDS_IN_MINUTE * DummyClass.NB_MINUTES_IN_HOUR; 

ale to nie działa. ..

Ktoś ma tu klucz?:/

(Używam MATLAB R2009a btw)

+0

co pojawia się komunikat o błędzie? –

+0

powiedziało "niezdefiniowana zmienna lub klasa DummyClass". btw, Edric dał mi rozwiązanie: po prostu zapomniałem, że moja klasa była w podfolderze, a w Matlabie trzeba użyć w pełni kwalifikowanej nazwy klasy (włączając podkatalogi) –

Odpowiedz

6

Zdecydowanie musisz odnieść się do stałych z pełną nazwą klasy, tak jak w drugim przypadku. Czy DummyClass znajduje się w katalogu (+packagename)? Jeśli tak, to trzeba użyć pełnej nazwy, tzn

NB_SECONDS_IN_HOUR = packagename.DummyClass.NB_SECONDS_IN_MINUTE * packagename.DummyClass.NB_SECONDS_IN_HOUR; 

EDIT: tylko przetestowane w R2009a:

>> ver matlab 
------------------------------------------------------------------------------------- 
[...] 
------------------------------------------------------------------------------------- 
MATLAB            Version 7.8  (R2009a) 
>> type DummyClass 

classdef DummyClass < handle 
    properties (Constant) 
     NB_SECONDS_IN_MINUTE = 60; 
     NB_MINUTES_IN_HOUR = 60; 

     NB_SECONDS_IN_HOUR = DummyClass.NB_SECONDS_IN_MINUTE * DummyClass.NB_MINUTES_IN_HOUR; 
    end 
end 

>> DummyClass.NB_SECONDS_IN_HOUR 
ans = 
     3600 
+1

To zależy od ścieżki, gdzie zakodować klasę ??? (i dlatego nie możemy ponownie użyć tej klasy bezpośrednio w projekcie anotowym bez tej samej struktury katalogów?) – Alexxx

+0

Ma to znaczenie tylko wtedy, gdy umieścisz DummyClass.m w katalogu pakietu MATLAB *, tj. zaczynając od "+". Gdy to zrobisz, zmienisz w pełni kwalifikowaną nazwę klasy. – Edric

Powiązane problemy