我正在嘗試爲500個左右的matlab src文件創建函數調用圖。我無法找到任何可以幫助我爲多個src文件執行相同操作的工具。從matlab src代碼生成調用圖
是否有人熟悉任何工具或插件?
在任何情況下,這些工具都無法使用,在閱讀什麼建議6000行的MATLAB代碼 沒有證件是值得歡迎的。
我正在嘗試爲500個左右的matlab src文件創建函數調用圖。我無法找到任何可以幫助我爲多個src文件執行相同操作的工具。從matlab src代碼生成調用圖
是否有人熟悉任何工具或插件?
在任何情況下,這些工具都無法使用,在閱讀什麼建議6000行的MATLAB代碼 沒有證件是值得歡迎的。
我認爲你的意思是你想看看你的代碼是如何運行的 - 哪些函數調用哪些子函數,何時運行以及運行多長時間?
看一看MATLAB Code Profiler。執行代碼如下:
>> profile on -history; MyCode; profile viewer
>> p = profile('info');
p
包含函數歷史,從同一個幫助頁面我上面鏈接:
歷史數據描述的輸入功能的順序和執行過程中退出。
profile
命令返回其返回結構的FunctionHistory
字段中的歷史數據。歷史數據是一個2乘n的數組。第一行包含布爾值,其中0
表示進入函數,而1
表示退出函數。第二行標識FunctionTable
字段中由其索引輸入或退出的功能。這個例子[下面]讀取歷史數據並將其顯示在MATLAB命令窗口中。
profile on -history
plot(magic(4));
p = profile('info');
for n = 1:size(p.FunctionHistory,2)
if p.FunctionHistory(1,n)==0
str = 'entering function: ';
else
str = 'exiting function: ';
end
disp([str p.FunctionTable(p.FunctionHistory(2,n)).FunctionName])
end
你不一定需要顯示的入口和出口要求像上面的例子;只要看看p.FunctionTable
和p.FunctionHistory
就足以顯示代碼進入和退出功能。
我建議看看使用depfun
函數來構造調用圖。有關更多信息,請參閱http://www.mathworks.com/help/techdoc/ref/depfun.html。
尤其是,我發現用'-toponly'
參數調用depfun
,然後遍歷結果,這是一種手工構建調用圖的絕佳方法。不幸的是,我不再能夠訪問我用這個編寫的任何代碼。
我與m2html答案達成一致,我只是想說,以下從m2html/MDOT文檔的例子是好的:
mdot('m2html.mat','m2html.dot');
!dot -Tps m2html.dot -o m2html.ps
!neato -Tps m2html.dot -o m2html.ps
但我有更好的運氣與導出爲PDF:
mdot('m2html.mat','m2html.dot');
!dot -Tpdf m2html.dot -o m2html.pdf
而且,你嘗試了上面的命令之前,你必須發出類似如下:
m2html('mfiles','..\some\dir\with\code\','htmldir','doc_dir','graph','on')
的從MDOT摹幫助舉例來說: mdot('m2html.mat','m2html.dot'); !dot -Tps m2html.dot -o m2html.ps !neato -Tps m2html.dot -o m2html.ps –