2013-10-30 104 views
4

我想使用matlab訪問私人文件夾中的函數。知道如何爲私人文件夾添加路徑將是非常好的?如何將matlab路徑添加到私人文件夾?

+0

當然,如上所述,您可以將內容複製到另一個文件夾。但是這會導致重複的文件。這個問題在我開發一個具有私有(非用戶可調用)函數的維護工具箱時出現了。我也希望添加和調用這些函數來簡化開發(我已經結束了多次編輯函數的錯誤副本)。 – horchler

+0

你想要完成什麼?如果你只是想使用這些私有函數,從自己的函數中調用它們就足夠了。 –

+0

我有點困惑。我以某種方式假定我們正在談論「內建」私人功能,這可能會做一些有用的事情,但通常不會從外部調用。對我來說,這意味着兩個函數(原始和副本)都沒有被修改 - 只有兩個有意義的版本。如果你自己是這些私人功能的開發者,那麼爲什麼要把它們放在第一位,如果你想從非私人環境中調用它們呢? – sebastian

回答

4

我不認爲有一種方法可以避開matlab的path內部結構,以防止添加「私有」文件夾。

如果你確實需要從matlab安裝中的某個地方訪問一個私有函數,那麼你當然可以自由地將該私有函數(或完整目錄)複製到其他地方,以便你可以將它添加到你的路徑。

+0

我得到什麼作爲一個錯誤是: – sophie

+0

「../private」是不是一個目錄」或不在路徑 – sophie

+0

所以,你應該檢查確實存在「../ private」路徑。由於您使用的是相對路徑,因此請檢查您是否從正確的目錄發出命令。但是,一旦你解決了這個問題,你肯定會遇到在路徑上不允許「私人」目錄的錯誤。 – sebastian

0

我認爲最好的做法是將該功能移動到了私有目錄(可通過複製它,或者只是移動起來一個目錄。)

+0

同意有1個版本比2好,但不確定這是否仍然有助於更新matlab。 –

+0

這不起作用......我不知道,但我從來沒有經歷過這樣的事情......想知道它是否是R2013a版本的更新? – sophie

0

,因爲它似乎在添加文件夾的路徑是不可能的,你可以考慮一個替代方案。

您應該可以創建/查找調用您需要的私有函數的函數,而不是複製該函數(這會讓您需要維護兩個版本)。

現在,如果您的基礎功能得到更新,您仍然可以。 (除了輸入格式改變,但你有更大的問題需要擔心)。

+0

我的問題是,這些功能是私人文件夾內從沒有寫函數調用(和作爲一種工具箱的一部分),所以我不能去,並更新每個功能... – sophie

+0

@sophie如果你擔心關於功能我不明白這個問題。你的函數應該已經能夠訪問私有函數,因爲私有函數應該意味着你不能從命令行運行它們。也許你需要確保私人目錄位於路徑上的目錄中。 –

+0

@丹尼斯J. - 「也許你需要確保私有目錄中的一個目錄的路徑」,聽起來邏輯給我檢查出來 - 我想知道你是怎麼做到的? – sophie

0

我發現以下內容對開發有用,例如:調試私有函數。

cd private 
addpath .. 

我可以使用專用功能,因爲他們都在我的工作目錄,但我也可以調用用戶可見的功能,在工具箱中。

0

我的建議,如果你需要訪問私有函數cubicmx.mex存儲在

C:\MATLAB\R2011a\toolbox\matlab\polyfun\private 

是在父目錄

C:\MATLAB\R2011a\toolbox\matlab\polyfun 

創建一個線功能cubicmx_drv.m用一個語句叫mex一個。

在這些例子中,它會爲已讀:

function zi = cubicmx_drv(x,y,z,xi,yi,tri,t) 
    zi = cubicmx(x,y,z,xi,yi,tri,t); 

你只需要記住再重新創建如果更改計算機或工作環境。 此外,你甚至可以從自己的代碼一樣

try 
    zi=cubicmx(x,y,z,xi,yi,tri,t); 
    catch 
    %create (or copy your local version) cubicmx_drv.m to the proper path 
    error(['Exit and restart matlab to solve this problem']) 
    end 

重新安裝,以阻止這種自動化解決方案將重新推出MATLAB後工作。

相關問題