我一直在搜索整個下午,並沒有找到解決方案,通過指定其路徑並且不將其目錄添加到路徑中來調用matlab函數。調用不在Matlab路徑上的函數而不添加該路徑
這個問題與Is it possible to call a function that is not in the path in MATLAB?非常相似,但在我的情況下,我不想調用內置函數,而只是調用m文件中定義的普通函數。
我想把手可能是一個解決方案(因爲顯然他們可以參考的功能不是路徑上),但我再次發現沒有辦法不cd
-ing的目錄下創建一個手柄,有創造它和cd
- 回來。試圖「探索」一個函數句柄對象是什麼,以及如何讓一個參考具體功能而不是路徑導致我沒有任何地方。
所以解決方案可能來自兩個角度:
1)您知道如何爲特定目錄中的m文件創建句柄。
2)你知道一種調用不在matlab路徑上的函數的方法。
編輯:我剛剛發現了函數functions(myhandle)
,它實際上可以讓你看到句柄所引用的文件路徑。但仍然沒有辦法修改它雖然...
FWIW,'feval'命令,這是該功能最自然的地方,明確排除指定目錄。 「'fname'參數必須是一個簡單的函數名稱,它不能包含路徑信息。」 –
正如一般的興趣一樣:你是否記得*爲什麼*你不想把目錄放在你的路上? –
@RodyOldenhuis在我工作的公司,我們與同一臺服務器上的多個用戶一起工作,使用RDP安裝一個matlab程序(因此一個matlabrc,一個路徑等)。用戶通常不小心路徑並不斷修改它。許多用戶錯誤地命名它們的功能,有時甚至會影響核心matlab函數,然後將它們的文件夾添加到路徑中。我用'removepath(...); function(); addpath(...)'等等看到代碼......如果兩個用戶同時執行這個操作,就會中斷代碼。所以最簡單的解決方案是能夠直接調用特定功能,而不用擔心路徑 –