我在我的许多MATLAB包中定义了一个类。令我惊讶的是,在没有导入类定义的情况下,我无法访问我的类的常量属性。即使它是班级本身的一种方法。像这样:
classdef TestClass
properties( Constant )
c=0;
end
methods
function obj = TestClass()
end
function getC(obj)
import test.TestClass;
disp(TestClass.c);
end
end
end
我只想检查我是否在这里做错了,或者这是在MATLAB中使用常量的正确方法。
答案 0 :(得分:1)
由于您已将TestClass放在一个包中,因此Matlab需要知道在哪里查找此类的定义,即使它是类或函数内的引用。上述代码的替代方法可以是:
function getC(obj)
disp(test.TestClass.c);
end
或者,如果在一个类中,可以从对象本身访问常量值。
function getC(obj)
disp(obj.c);
end
如果这些都不适合您,您可能需要从内存刷新TestClass的classdef。这将导致matlab重新加载常量值,该值在首次解析classdef文件以确定类的结构时被拉入Matlab。这可以使用clear classes
来完成,但是警告它也会清除所有其他类,变量和您设置的任何断点。
如果你想看看是否有必要,你可以查看元类对象,以确定Matlab"认为"你的班级结构应该是。您可以使用以下方法执行此操作。
mc = ?test.TestClass;
mc.PropertyList
您可能需要索引属性列表以查找您感兴趣的特定属性,但您要查找的内容是以下字段。