2013-02-21 18 views
2

我有一个类Ellipse(句柄,继承自其他类),它有一个静态方法createFromGaussian。它位于远程文件夹中,我将其添加到Matlab路径。 的事情是,如果我尝试调用静态函数之前创建的任何椭圆形物体,它失败:Matlab 2012a,静态方法调用,不识别当前文件夹外的类

>> Ellipse.createFromGaussian(arg1,arg2) 
Undefined variable "Ellipse" or class "Ellipse.createFromGaussian". 

它的工作原理,如果我尝试以下任何事情:

  • 我改变目前的目录于其中Ellipse.m文件位于
  • 从远程目录工作,予预先创建椭圆对象:

    >> Ellipse() 
    [C=, axis=[0.0,0.0], angle=0.0]   
    >> Ellipse.createFromGaussian([],2) 
    

这应该是这样吗?错误消息听起来很奇怪:当然,它找不到变量“Ellipse”或类“Ellipse.createFromGaussian”!它应该找到“椭圆”类

+1

Matlab的oop模型有点奇怪,它正在发展。你可能已经发现了某种附带案例。 Mathworks可能会意识到这个小怪事。将类和它的静态函数作为你导入的包的一部分,看看会发生什么,这可能会很有趣。 – learnvst 2013-02-21 01:25:24

+0

我刚刚发现,如果我将这些类安排到不同的文件夹层次结构中,它就可以工作。当然,这肯定是某种内部错误。我会尝试你的建议,创建一个包(huuuuuge懒惰,这么多软件来重做......)。 马上回来,结果:-) – dunadar 2013-02-21 09:59:50

回答

0

因此,Ellipse classdef文件和函数文件位于名为@Ellipse的相同文件夹中,并且@Ellipse文件夹的父项位于路径上?这是Matlab要求系统正常工作的原因。

ML help:“如果要为类定义使用多个文件,则必须使用@文件夹。在单独文件中定义的方法将文件名与函数名匹配,并且必须在classdef文件“。

+0

不,我不使用“@” - 文件夹。我有一个包含所有代码,Java风格的文件Ellipse.m。 – dunadar 2013-02-22 18:39:25

相关问题