2012-01-26 3 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

두 번째 경우와 마찬가지로 전체 클래스 이름으로 상수를 참조해야합니다. 디렉토리 (+packagename) 디렉토리 안에 DummyClass이 있습니까? 그렇다면, 당신은 완전한 이름을 사용하는 즉

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

편집이 필요합니다 단지 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

관련 문제