2012-01-26 36 views
5

Tôi không thể tìm ra cách làm một điều đơn giản như xác định hằng số bằng cách sử dụng những cái khác.Làm thế nào để xác định một hằng số bằng cách sử dụng một số khác trong một lớp Matlab

Ví dụ, một ví dụ giả:

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 

này không hoạt động :(

sau đó tôi thử với dòng này:

NB_SECONDS_IN_HOUR = DummyClass.NB_SECONDS_IN_MINUTE * DummyClass.NB_MINUTES_IN_HOUR; 

nhưng điều đó không làm việc, hoặc. ..

Ai đó có một đầu mối ở đây?:/

(Tôi đang sử dụng MATLAB R2009a btw)

+0

gì thông báo lỗi xuất hiện? –

+0

nó nói "biến không xác định hoặc lớp DummyClass". btw, Edric đã cho tôi giải pháp: tôi chỉ quên rằng lớp của tôi nằm trong thư mục con, và trong Matlab, người ta cần sử dụng tên đầy đủ của một lớp (bao gồm cả thư mục con) –

Trả lời

6

Bạn chắc chắn cần phải tham khảo các hằng số có tên lớp đầy đủ, như trong trường hợp thứ hai của bạn. Có phải DummyClass trong một thư mục (+packagename) không? Nếu vậy, bạn cần phải sử dụng tên đầy đủ, ví dụ:

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

EDIT: chỉ cần thử nghiệm điều này trong 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

Vì vậy, nó phụ thuộc vào đường dẫn mã lớp ??? (và vì vậy chúng tôi không thể sử dụng lại lớp này trực tiếp trong dự án anoter mà không có cùng cấu trúc thư mục?) – Alexxx

+0

Nó chỉ quan trọng nếu bạn đặt DummyClass.m trong một thư mục * gói MATLAB *, tức là bắt đầu bằng "+". Khi bạn làm điều đó, bạn thay đổi tên đầy đủ của lớp. – Edric

Các vấn đề liên quan