Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oop Matlab 2012a,静态方法调用,不识别当前文件夹外的类_Oop_Matlab - Fatal编程技术网

Oop Matlab 2012a,静态方法调用,不识别当前文件夹外的类

Oop Matlab 2012a,静态方法调用,不识别当前文件夹外的类,oop,matlab,Oop,Matlab,我有一个类Ellipse(句柄,从其他类继承),它有一个静态方法,名为createFromGaussian。它位于一个远程文件夹中,我将其添加到Matlab路径中。 问题是,如果我在创建任何椭圆对象之前尝试调用静态函数,它将失败: >> Ellipse.createFromGaussian(arg1,arg2) Undefined variable "Ellipse" or class "Ellipse.createFromGaussian". 如果我尝试以下任何一种方法,它都会起

我有一个类
Ellipse
(句柄,从其他类继承),它有一个静态方法,名为
createFromGaussian
。它位于一个远程文件夹中,我将其添加到Matlab路径中。 问题是,如果我在创建任何椭圆对象之前尝试调用静态函数,它将失败:

>> Ellipse.createFromGaussian(arg1,arg2)
Undefined variable "Ellipse" or class "Ellipse.createFromGaussian".
如果我尝试以下任何一种方法,它都会起作用:

  • 我将当前目录更改为Ellipse.m文件所在的目录
  • 在远程目录中,我预先创建了一个Ellipse对象:

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

应该是这样吗?这个错误消息听起来很奇怪:当然它找不到变量“Ellipse”或类“Ellipse.createFromGaussian”!它应该找到“Ellipse”类,因此Ellipse类定义文件和函数文件位于名为
@Ellipse
的同一文件夹中,并且
@Ellipse
文件夹的父文件夹位于路径上?这就是Matlab系统工作所需的


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

Matlab oop模型有点奇怪,并且正在发展中。你可能发现了一些边缘案件。也许值得让Mathworks意识到这一点。让类及其静态函数成为您导入的包的一部分可能会很有趣,只是为了看看会发生什么。我刚刚发现,如果我将这些类排列到不同的文件夹层次结构中,它就会工作。当然,这一定是某种内部错误。我将尝试你的建议,创建一个软件包(Huuuuge laziness,这么多软件需要返工…)。马上返回结果:-)不,我不使用“@”文件夹。我有一个单独的文件Ellipse.m,其中包含所有Java风格的代码。