❶ 怎麼往matlab中添加工具箱
下載一個工具箱,添加到matlab中,直接運用:
在matlab的file下面的set path把它加上,把路徑加進去後在
file→Preferences→General的Toolbox Path Caching里點擊update Toolbox Path Cache更新一下,就OK了
1.1 如果是Matlab安裝光碟上的工具箱,重新執行安裝程序,選中即可;
1.2 如果是單獨下載的工具箱,一般情況下僅需要把新的工具箱解壓到某個目錄。
2 在matlab的file下面的set path把它加上。
3 把路徑加進去後在file→Preferences→General的Toolbox Path Caching里點擊update Toolbox Path Cache更新一下。
4 用which newtoolbox_command.m來檢驗是否可以訪問。如果能夠顯示新設置的路徑,則表明該工具箱可以使用了。
或者將工具箱復制到toolbox目錄然後在set path裡面添加這個目錄就可以用了。
在matlab的file下面的set path把它加上,把路徑加進去後在
file→Preferences→General的Toolbox Path Caching里點擊update Toolbox Path Cache更新一下,就OK了
以下是我在別的地方看到的,轉過來你參考一下吧。
首先說說添加到matlab搜索路徑好處:1
對
n——你只需要存儲一個副本,就可以在其他地方使用。具體來說,假設你在數據盤D上新建了兩個目錄abc和def,這兩個工程(每個目錄下的所有程序相應地稱為一個工程)都需要調用同一個(些)函數(簡稱工具箱),這時候,如果你沒有把該工具箱添加到matlab的搜索路徑下,則需要分別把工具箱中所有用到的文件都復制到目錄abc和def下才能正確運行。這顯然浪費空間,所以,matlab提供了一個搜索路徑(默認在matlab安裝目錄下的toolbox中),只要把工具箱對應的整個文件夾復制到搜索路徑對應的目錄下,並且通知matlab一聲(把該路徑正確添加到搜索路徑中),就可以在abc和def中使用這個工具箱了(即無論你的工程文件在哪個目錄(有效的目錄)下都可以訪問這個工具箱中的函數)。下面就以matlab安裝目錄下的toolbox目錄作為默認的添加路徑進行詳細說明。
1. 如何添加工具箱看
以下是添加工具箱的方法:(論壇很多人轉載過,這里就不作區分了,下面的舉例也一樣)
如果是Matlab安裝光碟上的工具箱,重新執行安裝程序,選中即可。如果是單獨下載的工具箱,則需要把新的工具箱(以下假設工具箱名字為svm)解壓到toolbox目錄下,然後用addpath或者pathtool把該工具箱的路徑添加到matlab的搜索路徑中,最後用which
newtoolbox_command.m來檢驗是否可以訪問。如果能夠顯示新設置的路徑,則表明該工具箱可以使用了。具體請看工具箱自己代的README文件。
1.1 舉例:
要添加的工具箱為svm,則解壓後,里邊有一個目錄svm,假設matlab安裝在D:\MATLAB6p5,將svm目錄拷貝至D:\MATLAB6p5\toolbox,然後運行matlab,在命令窗口輸入addpath
D:\MATLAB6p5\toolbox\svm回車,來添加路徑。然後在svm目錄下,任意找一個m文件,以svcinfo.m為例,在命令窗口中輸入which
svcinfo.m。如果顯示出該文件路徑,如
D:\MATLAB6p5\toolbox\svm\svcinfo.m,則安裝成功,當然也可以在命令窗口輸入path來查看。
上面的說明和例子基本上介紹了在matlab中如何添加工具箱,下面是其他補充:
1.2 添加方式總結:
事實上,有兩種添加工具箱到matlab搜索路徑的方法:其一是用代碼,其二是用界面。其實無論用哪種方法,都是修改pathdef.m這個文件,閣下如果是高手,可以直接打開該文件修改,呵呵,對此這里不作討論。
1.2.1 代碼方式:
1.2.1.1 適用於添加下載的工具箱(別人的):
在命令窗口輸入addpath D:\MATLAB6p5\toolbox\svm 或者addpath(『D:\MATLAB6p5\toolbox\svm』);
但是這種方法只能添加svm目錄,如果該目錄下有其他子文件夾,並且運行時候逗隱式地調用到這些子文件夾(例如假設svm目錄下存在子文件夾matdata,該子文件夾下有logo.mat這個文件,且在m文件代碼中使用了諸如
load logo
這樣的句子,即沒有顯式給出logo.mat的具體路徑,則稱為逗隱式地),則不能正確訪問。因此,有必要在添加時使用以下語句把svm目錄下所有文件夾都添加到搜索路徑中:
500){this.resized=true;this.style.width=500;}"> 程序代碼
addpath(genpath(D:\MATLAB6p5\toolbox\svm));
另外,如果只使用以上代碼,則退出matlab後,新添加的路徑不會被保存下來,下次重新啟動matlab後又需要重新添加。可以用savepath來解決這個問題,即在命令窗口中使用
savepath 便可。不過保存路徑操作只對matlab
2006a、2006b有效(應該對版本7.0以上的都有效,因沒有測試,所以不敢肯定),對6.5版本的matlab無效(該版本沒有savepath這個命令)。
1.2.1.2 適用於添加自己的工具箱(即工具箱自己編寫,然後希望別人下載後當運行主文件時自動把路徑添加到matlab搜索路徑中):
在主文件中加入如下代碼;
500){this.resized=true;this.style.width=500;}"> 程序代碼
sCurrPath = fileparts(mfilename('fullpath'));
addpath(genpath(sCurrPath)); %如果該工具箱沒有其他子目錄,則可以不需要用genpath
savepath; %這句可根據各人需要自行選擇,相信上一節的解釋已經很清楚
1.2.2 界面方式:
首先把主界面調出來,有兩種方式,一種是在命令窗口輸入pathtool,另一種是在matlab菜單調用(File
-> Set Path…)。打開主界面後,相信不用太多解釋了。Add Folder… 或者 Add with subfolders…
就可以了,添加完畢後,如果需要保存該路徑,則在close前save一下就可以了。
這種方式的好處是如果路徑有問題,matlab會馬上報錯,告訴用戶添加失敗。
2 工具箱添加失敗:
2.1 work目錄和toolbox目錄問題:
你當然可以單獨把一個或多個文件(不含文件夾)放在work目錄下來實現逗1對n地,因為work目錄是其中一個matlab默認的搜索路徑,但顯然不能包含文件夾,如果包含文件夾,則同樣需要把該文件夾添加到搜索路徑中。相反,你不能單獨把一個或多個文件(不含文件夾)放在toolbox目錄下來實現逗1對n地,因為toolbox這個目錄並非matlab的一個默認搜索路徑,除非你把toolbox文件夾添加到搜索路徑中。
2.2 由於路徑名稱而導致添加失敗的總結:
2.2.1 路徑存在空格:
錯誤:addpath C:\Program Files\MATLAB\R2006b\toolbox\finity
正確:addpath(『C:\Program Files\MATLAB\R2006b\toolbox\finity』) 或者使用界面方式添加
說明:在6.5版本的matlab不推薦使用帶空格的路徑,因為matlab6.5的安裝路徑是不允許有空格的,因此不曉得帶空格的工具箱路徑會出現什麼問題。7.0以上應該沒有問題。
界面方式則估計沒有問題,有問題matlab會自動報錯的。
2.2.2 路徑存在中文:
用addpath和界面方式均可以成功添加,但不推薦,最好使用英文路徑。
2.2.3 路徑存在逗@地字元:
均不成功,不要使用逗@地字元
小結:出現其他與添加相關的錯誤時,用標準的路徑和文件名試試吧。
3 正確添加了工具箱,但運行調用時出錯:
3.1 版本問題:
對於工具箱檢測到matlab版本不兼容的問題,先引用一下happy教授的回復:
=====================happy================================
這個是有用的,估計是作者考慮到隨著matlab的升級會出現不兼容的問題,因此加了類似的設置error('unsupported
matlab version. please send an
email.');以提示大家。從這一設置上看4.x和5.x版本的是完全沒有問題的,之後的版本可能會出現問題,是否真的會出現需要進行測試
=========================================================
我也遇到過這類問題(如3.3節提到的spm5,下載得到的文件如果遇到2006版本的matlab則無法成功運行),但不是matlab的直接回復說逗版本不支持地,而是普通的語法出錯。我的經驗是根據錯誤提示調試一下,看看問題出在哪裡,然後再對程序作相應修改。例如在我的問題中,由於不支持最新的版本,所以2006a和2006b版本分別用下面的語句進行檢查:strcmp(version('-release'),'2006a')
和 strcmp(version('-release'),'2006b')。
3.2 程序中其他語法錯誤:
估計部分語法不兼容,例如7.0版本以上的matlab可以使用&&、||、@(x)等等之類的符號,但是在6.5版本下無效,這種錯誤也需要自己手動修改一下代碼。
3.3 工具箱中的函數重名問題:
Happy教授也提到過,除了改名,沒有太好的辦法。但是如果改的地方不止一個,例如遇到該文件進行了多次的自我調用(一個典型例子是以switch
和case語句進行區分不同的操作),或者其他文件存在對該文件的調用時,這是個很頭痛的事情。根據我的經驗,也沒有找到太好的解決辦法。以我所用的兩個工具箱為例,它們的文件夾名字不同(一個是spm2,一個是spm5),但是裡面的主m文件名字都一樣,為spm.m,如果兩個工具箱同處於matlab的搜索路徑中,會導致其中一個工具箱失效,更別說兩者之間通過切換來進行調用了。我一般的解決方法是安裝兩個matlab,例如一個是6.5版,一個是2006版,把兩個工具箱分別添加到不同的matlab中,這樣就可以啟動不同版本的matlab使用不同版本的工具箱了,呵呵,算是一個補救的方法吧。
3.4 找不到m文件的問題:
如果你已經把工具箱正確添加到搜索路徑下,這種情況一般不會發生。也就是說,通過逗文件夾
-> 運行matlab
->添加路徑地步驟後,該文件夾下所有文件應該都可以訪問到。但是,當你對該文件夾下的m文件更新(包括修改和新增)了以後,此時如果你不重啟matlab,則可能會出現找不到m文件的問題(特別是該工具箱中的文件沒有依賴關系,它們只是被放在一起方便調用,當你新增一個m文件到該文件夾下而不重啟matlab的時候,會造成這一新增m文件訪問失敗)。解決這個問題的方法之一顯然是重啟matlab,如果你不想重啟,也可用第二個方法:在命令窗口輸入:
rehash toolbox ,逗強制地matlab刷新toolbox目錄下的所有文件,這樣就可以正確訪問了。