【问题标题】:How to define a constant using another one in a Matlab class如何在 Matlab 类中使用另一个常量定义一个常量
【发布时间】:2012-02-19 15:59:58
【问题描述】:

我不知道如何做这么简单的事情,比如使用其他常量定义常量。

例如,一个虚拟的例子:

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

这不起作用:(

然后我尝试了这条线:

NB_SECONDS_IN_HOUR   = DummyClass.NB_SECONDS_IN_MINUTE * DummyClass.NB_MINUTES_IN_HOUR;

但这也不行……

这里有人知道吗? :/

(我正在使用 MATLAB R2009a 顺便说一句)

【问题讨论】:

  • 它说“未定义的变量或类 DummyClass”。顺便说一句,Edric 给了我解决方案:我只是忘记了我的类在子文件夹中,而在 Matlab 中,需要使用类的完全限定名(包括子目录)

标签: matlab matlab-class


【解决方案1】:

您肯定需要使用完整的类名来引用常量,就像您的第二种情况一样。 DummyClass 是否在包 (+packagename) 目录中?如果是这样,您需要使用完全限定名称,即

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

【讨论】:

  • 所以这取决于我们编写类的路径??? (所以我们不能在没有相同目录结构的另一个项目中直接重用这个类?)
  • 只有将 DummyClass.m 放在 MATLAB package 目录中才重要,即以“+”开头的目录。当你这样做时,你改变了类的完全限定名。
猜你喜欢
  • 1970-01-01
  • 2010-10-03
  • 1970-01-01
  • 1970-01-01
  • 2011-11-24
  • 2018-12-06
  • 1970-01-01
  • 2012-04-17
  • 2016-09-09
相关资源
最近更新 更多