2013-02-21 52 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

相關問題