2012-07-10 44 views
3

我定義了一個名爲「FilterCriteria」的類,它有一堆與它關聯的函數.m文件(getAMask,getBMask等)。當我創建FilterCriteria對象並使用它調用函數時,我沒有任何問題。然而,最近我添加了另一個函數(在一個側面說明中,它與另一個仍然有效的函數幾乎相同),並且Matlab返回錯誤:「FilterCriteria沒有適當的方法,屬性或字段getHMask」。使用類定義對象調用新函數時生成的「沒有適當的方法」錯誤

我在網上搜索了這個問題,但是我找不到任何東西。文件getHMask.m肯定是在正確的文件夾中,所以我不明白爲什麼Matlab似乎有這樣的問題找到它。

這裏的getHMask.m的頭:

function mask = getHMask(object, quadrant, channel) 

任何幫助將不勝感激。提前致謝。

+1

你能告訴我們在你的問題函數聲明? – Peaches491 2012-07-10 19:08:52

回答

6

1)我有時犯的一個錯誤是沒有用正確的名字保存文件。確保大寫字母在正確的地方等!

2)另一層錯誤檢查在這裏...您可以撥打電話methods('object here')(see here)並確保它列出您嘗試添加到其中的方法(功能)。如果它沒有出現在這裏,你應該檢查方法的實現,並確保它正確地被添加到你正在使用的對象的類中。

+3

謝謝,本!在我的特殊情況下,我所要做的就是重新啓動Matlab ...然後由於某種原因它識別出.m文件。只是爲了踢球,我試了2號球,這是一個很好的調試方式(事實上,我發現一個不同的方法被添加到錯誤的類!)。 – 2012-07-11 12:07:51

+0

Upvote第一個錯誤! :-)(來到這裏尋找相同的問題,我犯的錯誤是給出了錯誤的名字!) – Sangram 2015-06-26 04:36:08

4

我有同樣的問題,這是本的第2號子彈建議的一種,它讓我瘋狂。原來MatLab沒有加載我班的m文件的最新版本。我隱約記得它早些時候給了我一個警告,因爲在工作區中存在着舊類的實例,並且爲了防止它們失效,它說它將不會更新類,直到我清除工作區爲止...

所以,如果這是問題,重新啓動MatLab將工作,或者你可以只輸入>> clear

+0

假設每次發生此錯誤時使用'清除'會浪費大量時間(數據需要重新加載,重新處理等等)。有沒有其他解決方案強制Matlab'重新加載'剛剛保存的源代碼?爲什麼很難重新加載和重新編譯你的代碼:這是發生這種情況的唯一環境。 – 2016-10-03 10:53:45

+0

安東尼奧,問題是如果你重新定義了一個類(例如,添加或刪除一個屬性),那麼舊版本的類創建的現有對象將與該類的新版本衝突。如果您想避免清理整個工作區,您必須有一種方法可以僅使用新類來手術重新創建受影響的對象。 – tokamak 2016-10-04 20:30:29

+0

我只有一個用於測試類的對象(分配給單個變量):每次更新類時都會將該類的新屬性分配給該變量。沒有「舊」對象,只要理論上應該創建並初始化一個對象,只要我運行該特定的代碼即可。坦率地說,我不明白爲什麼它不起作用。清除引用該對象的變量不起作用。我發現的唯一方法是用classname發出'clear'命令:問題似乎與過時的'編譯'類相關,而不是過時的對象。 – 2016-10-05 05:18:21

相關問題