2011-03-30 88 views
1

我是一個MATLAB的新手,但我必須寫一些代碼。我在使MATLAB看到我在外部.m文件中定義的函數時遇到了問題。這是我做了什麼:我創建了一個名爲,比如說foo.m文件,在我的家目錄具有以下內容:如何使matlab查看.m文件中定義的函數?

 
function [y] = foo(x) 
% description 
y = x + 1 

當我運行MATLAB(我的家目錄是MATLAB的WORKDIR)不請參閱foo函數 - 它使用標準??? Undefined function or variable 'foo'消息進行答覆。但是help foowhich foo分別返回正確的數據打印幫助文本並指向foo.m文件。

我一定錯過了一些東西,但我不知道它是什麼。這變得非常煩人。

哦,經過多次嘗試和錯誤的嘗試,我設法調用該函數。不幸的是我不記得我已經完成的步驟順序。而且,在重新啓動matlab後,它會返回到其通常的'未定義函數或變量'響應。

我有運行在linux上的7.11.0.584的matlab。

+0

好的,我弄明白了。我在matlab工作目錄中有幾個文件.m。其中之一包含一個破壞matlab解析器的函數描述。這導致稍後以字典順序處理的文件不能正確加載。當我刪除該功能評論一切正常加載。 – user684793 2011-03-31 21:37:54

回答

0

函數需要在MATLAB的路徑中。使用pathtool告訴MATLAB哪裏可以找到你的功能。請注意,如果您將函數命名爲與現有函數相同的名稱,則MATLAB將根據路徑列出的順序,首先使用它找到的任何函數,如您在pathtool中所看到的那樣。

+0

我已經使用'addpath'命令添加了該目錄,所以當我運行'path'命令時它顯示在最上面。但效果是一樣的 - 該功能不起作用,「幫助」和「哪個」:/ – user684793 2011-03-30 23:34:51

1

MATLAB需要被告知要搜索哪些目錄來訪問這些m文件。很明顯,它不能讓您搜索整個磁盤驅動器。 MATLAB搜索路徑是將按特定順序搜索以查找您的函數的目錄列表。

help addpath 
help pathtool 

您不應該將這些文件放在官方MATLAB工具箱目錄的任何位置。選擇一個完全獨立的目錄。

最後,請注意不要將自己的函數命名爲與現有MATLAB函數的名稱相匹配。否則,你的下一個問題就是你的代碼無法正常工作的原因。這是奇怪和令人困惑的錯誤的常見原因。

+0

感謝您的回答。但請注意,我將該.m文件放入的目錄是matlab的工作目錄(而不是安裝目錄清除)。我嘗試過使用addpath並沒有明顯的區別(pathtool不起作用,因爲Java不可用或者其它)。另外最讓我困惑的是調用函數失敗 - matlab說它是未定義的,但是幫助和哪些命令可以工作! – user684793 2011-03-30 23:27:33

1

看來你在加入路徑時遇到了一些麻煩。嘗試在matlab編輯器中打開文件並在文件中添加一個斷點。如果文件不在Matlab的路徑上,matlab應詢問您是否要更改目錄或將文件添加到路徑中,請選擇添加到路徑。

如果這不起作用,請嘗試將當前工作目錄(顯示在主窗口中)更改爲與m文件相同的位置並調用該函數。如果這不起作用,您要麼錯誤地指出了名稱,您的安裝可能有問題。

偶爾matlab有問題,如果它沒有寫入文件目錄的權限,所以也檢查,即確保目錄或m文件不需要管理員權限。

哦,並嘗試:

clear functions 

重裝所有功能到內存中。

0

雖然遲到了,但我希望它能幫助別人。 如果你正在調用的函數所在的文件夾中存在與MATLAB工具箱中的某個函數具有相同名稱的其他函數,那麼Matlab將無法識別其許可證,因此將禁用整個文件夾執行,否它將被正確添加到路徑中。雖然幫助將顯示。

爲了檢查,請鍵入:

這name_of_func.m

,你會得到與 「%沒有可用許可證」 消息的路徑。 如果它是你自己的功能,你不應該得到這個消息,但只有路徑。 因此,在這個文件夾中找到與MATLAB工具箱函數具有相同名稱的函數,並對其進行重命名。我會解決問題:)。

最好的問候 Wajahat

相關問題