2008-09-18 99 views
36

爲了發佈我寫的函數,這個函數依賴於我編寫的其他函數,它們有自己的依賴關係等等,而不分發我所寫過的每個m文件,我需要弄清楚完整的列表依賴關係是針對給定的m文件的。是否有內置/免費下載的方式來做到這一點?如何在MATLAB中生成函數依賴關係列表?

具體而言,我對MATLAB 7.4.0(R2007a)的解決方案很感興趣,但如果在老版本中有不同的方法,請務必在此處添加它們。

回答

35

對於(如2007年或2008年),你可以使用內置的功能Matlab的較新版本:

  1. mlint
  2. 依賴報告和
  3. 覆蓋報告

另一種選擇是使用Matlab的分析器。該命令是配置文件,它也可以用來跟蹤依賴關係。要使用的個人資料,你可以做

>> profile on % turn profiling on 
>> foo;   % entry point to your matlab function or script 
>> profile off % turn profiling off 
>> profview  % view the report 

如果探查器不可用,那麼也許下面的兩個函數(預MATLAB 2015A):

  1. depfun
  2. depdir

例如,

>> deps = depfun('foo'); 

給出了一個包含foo.m的所有依賴關係的結構deps。

從答案23,更新版本的MATLAB(2015a後)使用matlab.codetools.requiredFilesAndProducts來代替。

條回答

編輯:

注意事項感謝@Mike卡茨評論

  • 記住探查器將只 告訴你文件實際上在這些試驗中使用 ,所以如果你不通過每個分支去 ,你可能有 額外的依賴關係。 相關性報告是一個很好的工具,但 僅解決了路徑上的靜態依賴關係,僅解決了單個目錄中 文件的靜態依賴關係。

  • Depfun更可靠,但它給你 它可以想到的每一件可能的事情, ,仍然會錯過LOAD和EVAL的。

+2

請記住,事件探查器只會顯示在這些運行中實際使用的文件,因此如果您沒有瀏覽每個分支,則可能有其他依賴關係。依賴性報表是一個很好的工具,但只能解決路徑上的靜態依賴關係,並且僅用於單個目錄中的文件。 – 2009-03-14 14:24:20

+3

Depfun更可靠,但可以爲您提供它想到的所有可能的事情,並且仍然會錯過LOAD和EVAL。 – 2009-03-14 14:25:19

1

更新:對於MATLAB 2015b,depfun和depdir已被刪除,因此您必須使用matlab.codetools.requiredFilesAndProducts()。