2014-10-30 49 views
1

我已經在MATLAB中創建了一些我打算用於幾個獨立項目的一般函數。但是我不想將該函數複製到每個單獨的項目函數中。matlab創建路徑來停止複製代碼

我已經創建了一個名爲Misc_Function的文件夾,當我放置這些常規功能時。我知道我可以通過在嘗試調用函數時使用路徑和函數名稱來明確地引用此函數。

我相信你可以添加一個路徑(在我的情況下'H:\ MyTeam \ Matlab \ Misc_Function')當MATLAB加載是正確的,如果是的話,你如何做到這一點?

假設可以完成上述操作,我很想知道MATLAB如何找到正確的函數。在我的理解(猜測工作)MATLAB有一個路徑列表,它檢查試圖找到一個指定名稱的函數 - 是否正確?如果是的話,當有同名的函數時會發生什麼?

+1

對於最後一個問題 - 居住在這是在選擇列表中的路徑越往上路徑之一。爲了添加路徑,你可以使用'addpath'。 – Divakar 2014-10-30 09:59:00

回答

1

MATLAB確實有它自己的search path這是一個文件夾的集合,當你引用一個函數或類(以及其他一些東西)時,MATLAB將搜索這些文件夾。要查看搜索路徑,請在MATLAB提示符處鍵入path。從documentation:

搜索路徑上的文件夾順序是很重要的。當名稱相同的文件出現在搜索路徑的多個文件夾中時,MATLAB會使用距離搜索路徑頂部最近的文件夾中找到的文件。

如果您有一組實用功能要提供給您的項目,將文件夾添加到與addpath功能的搜索路徑的頂部,像這樣

addpath('H:\MyTeam\Matlab\Misc_Function'); 

你有每次啓動MATLAB時都要這樣做。或者,更方便的是,使用savepath命令保存當前搜索路徑,或將上述命令添加到startup.m文件中。

1

您可以檢查實際的路徑中使用

path 

你會發現這裏Matlab的搜索功能,即(在啓動時)最頂級的路徑是在你的主文件夾的路徑。對於Linux,這是例如/home/$USER/Documents/MATLAB。對於Windows,它是在c:\Users\%USER%\Documents\Matlab(我認爲)的某處。此文件夾中放置一個文件startup.m允許在啓動時Matlab的使用

addpath('H:\MyTeam\Matlab\Misc_Function'); 

addpath(genpath('H:\MyTeam\Matlab\Misc_Function')); 

添加額外的路徑。後者(genpath)也允許添加所有的子目錄。只需寫一個文件startup.m並在其中添加上面的一行。

1

我相信'addpath'會將文件夾添加到當前MATLAB會話的MATLAB路徑。要保存其他會話的更新路徑,您需要執行'savepath'命令。

正如前面的評論所述,在startup.m中添加文件夾是一個好主意,因爲它將被添加到MATLAB啓動時的路徑中。

要獲得關於如何MATLAB找到正確的函數問題,MATLAB維持一個目錄列表在其路徑在一個名爲pathdef.m。對路徑的任何更改都會寫入此文件(當您執行'savepath'時)。路徑變量是用這個文件的內容初始化的。

+0

謝謝。我實際上最終編輯了pathdef.m文件。我只是在這裏添加了目錄位置,並且很好地工作。我查看了startup.m文件,但必須誠實地不確定如何添加我的目錄。 – mHelpMe 2014-10-31 08:55:33

+1

你需要在startup.m中調用addpath('要添加的目錄')。這樣,每次MATLAB啓動時,該目錄就被添加到MATLAB路徑中。 – saras 2014-10-31 13:23:58