2012-01-26 9 views
5

他のものを使って定数を定義するなどの簡単なことを理解できません。例えばMatlabクラスで別のものを使って定数を定義する方法

、ダミー例:

NB_SECONDS_IN_HOUR = DummyClass.NB_SECONDS_IN_MINUTE * DummyClass.NB_MINUTES_IN_HOUR; 

が、それはどちらか動作しません:

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 

これは、私は、この行で試してみました:(

を動作しません。 ..

誰かがヒントを得ましたか:/

(私はMATLAB R2009a btwを使用しています)

+0

メッセージが現れ何のエラー? –

+0

それは "未定義の変数またはクラスDummyClass"と言いました。 btw、Edricは私に解決策を教えてくれました。私は自分のクラスがサブフォルダに入っているのを忘れていました。Matlabではクラスの完全修飾名(サブディレクトリを含む)を使用する必要があります。 –

答えて

6

2番目のケースのように完全なクラス名で定数を参照する必要があります。パッケージ内のDummyClassは(+packagename)ディレクトリですか?もしそうなら、あなたは完全修飾名を使用する必要がある、すなわち

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

EDIT:ちょうど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

したがって、コードをクラス??? (したがって、同じディレクトリ構造を持たないanoterプロジェクトで直接このクラスを再利用することはできません) – Alexxx

+0

DummyClass.mをMATLAB *パッケージ*ディレクトリ、つまり "+"で始まるディレクトリに配置する場合のみ重要です。これを行うと、クラスの完全修飾名が変更されます。 – Edric

関連する問題