2012-05-11 82 views
2

我安裝一個MATLAB工具箱,它查找文件通過調用「這」命令不能在MATLAB

which 

當我在bash中鍵入

which filename 

工作,我得到

/usr/local/bin/filename. 

但是

which('filename') 
在MATLAB命令窗口

'filename' not found. 

我可以看到二進制文件是有在

/usr/local/bin. 

此外,

/usr/local/bin 

被添加到MATLAB的搜索路徑,所以我不確定這裏發生了什麼事。有什麼建議麼??

謝謝! Ayesha

回答

1

bash which只在Linux路徑中查找可執行文件。 MATLAB which命令僅查找MATLAB文件(*.m,*.p和MDL文件,根據MATLAB documentationwhich命令)。 MATLAB which找不到其他二進制文件。在大多數情況下,如果文件名爲*.m*.p,並且其目錄位於Linux路徑和MATLAB路徑中,則可以使用bash which和MATLAB which來定位文件。

我假設你有filename/usr/local/bin/,但不是filename.m。問題也可能是你的filename.m的路徑不在你的MATLAB路徑中。使用path命令檢查並修改您的MATLAB路徑,或使用菜單:文件 - >設置路徑。

所以,如果在一些MATLAB工具箱使用which命令的安裝腳本或安裝功能(MATLAB程序),那麼它是尋找一個MATLAB的程序文件filename.mfilename.p,而不是普通的Linux二進制文件filename

+0

嗯..我檢查了/ usr/local/bin在路徑中的文件夾列表中。有一件事,但它不是一個.m文件。這是一個可執行文件。是這個問題嗎?我看到工具箱的安裝文件是一個mfile,它調用'which;並沒有找到它,給我一個錯誤。 –

+1

MATLAB''只查找MATLAB程序文件,而不是Linux可執行文件,除非您將它們命名爲* .m'或'* .p'。如果在MATLAB工具箱的安裝腳本或函數(MATLAB'.m'文件)中使用'which('filename')'命令,那麼它正在尋找一個MATLAB程序文件'filename.m'或受保護的程序文件'filename.p',不適用於Linux可執行文件'filename'。 – nrz

1

您可以使用exists而不是此處。如果文件存在,則存在將返回代碼2.然而,哪些工作是可行的。舉例來說,在我的搜索路徑.pdf文件:

>> which('Fritsch FN - Monontone piecewise cubic interpolation') 
'Fritsch FN - Monontone piecewise cubic interpolation' not found. 

請參閱哪些沒有找到它,但是當我提供全名,包括擴展,它工作正常。

>> which('Fritsch FN - Monontone piecewise cubic interpolation.pdf') 
/Users/woodchips/Desktop/Fritsch FN - Monontone piecewise cubic interpolation.pdf 

當然,也存在着作品。

>> exist('Fritsch FN - Monontone piecewise cubic interpolation.pdf','file') 
ans = 
    2 

我的猜測是,你的問題出現是因爲你沒有包括擴展名。這顯然會自動查找.m,.p和。根據文檔的mdl文件。

+0

嗯..存在給ans作爲2(這是一個可執行文件,所以我不知道該怎麼把它的擴展名)。無論如何,我發現一個解決方法是使用這個:MATLAB的命令窗口中的!文件名啓動可執行文件。不是一個漂亮的解決方案,但現在正在工作。 –

+0

要執行程序,而不是'!',您還可以使用'unix'命令。 – nrz