2014-10-17 78 views
0

我正在寫一個腳本(讓我們稱之爲main.m),它調用我寫的函數(讓我們稱之爲myfunc.m)。似乎我有一些myfunc.m函數在我的MATLAB路徑的不同位置。限制MATLAB調用與運行文件相同的文件夾中的函數

我想以某種方式限制matlab只在我的main.m類所在的同一個文件夾中查找自定義函數時。

因此,舉例來說,如果我有

C:\example\main.m 
C:\example\myfunc.m 

C:\asd\main.m 
C:\asd\myfunc.m 

,我在文件夾example打開main.m,當它涉及到的myfunc.m通話,它只能在調用一個函數文件夾C:\example\。如果我在文件夾C:\asd\中運行main.m,也是如此。

我希望這是有道理的,謝謝。

+0

爲什麼不使用不包含不必要文件夾的普通路徑? – Cheery 2014-10-17 05:34:41

+0

嗨,目前這是不可能的,因爲我需要不同代碼的這個相同的功能文件的不同版本(愚蠢的我知道,但它只是我現在做了它),因此我想要一種方法來選擇文件就事論事。 – 2014-10-17 05:51:30

+0

然後創建一個函數,根據您需要的函數版本更新您的路徑。當需要從另一個文件夾調用函數時,更新路徑,並從那裏調用函數。 – Cheery 2014-10-17 05:56:34

回答

3

在短期內,一個相當快速的解決辦法是,使您的myfunc.m文件到私人功能,這些功能領先於比起常規功能優先的條款,只能由功能相同的父被稱爲夾。

只需將您的myfunc.m文件名爲private文件夾中:

C:\example\main.m 
C:\example\private\myfunc.m 

C:\asd\main.m 
C:\asd\private\myfunc.m 

現在example\private\myfunc.m只有通過事物的文件夾example中調用,和\asd\private\myfunc.m只有在事情贖回文件夾asd。另外,它們的優先級高於其他函數,所以你可以確保正確的函數總是被調用。長期來看,您可能會從MATLAB的管理命名空間衝突的其他更廣泛的方法中受益,例如子函數,面向對象的編程和包。

子功能是非常簡單的,以獲得掛起。包並不複雜,但需要考慮如何組織代碼(通常非常值得)。 OO編程在典型的編程風格上是一個更大的變化,但對於大型應用程序來說非常重要。

+0

謝謝,不知道私人文件夾選項。我會讀一下你提到的那些和其他一些觀點。 – 2014-10-17 11:10:37

相關問題