約 500 個の matlab src ファイルの関数呼び出しグラフを作成しようとしています。複数の src ファイルに対して同じことを行うのに役立つツールが見つかりません。
ツールやプラグインに詳しい人はいますか?
そのようなツールが利用できない場合は、ドキュメントなしで 6000 行の matlab コードを読むことについての提案を歓迎します。
約 500 個の matlab src ファイルの関数呼び出しグラフを作成しようとしています。複数の src ファイルに対して同じことを行うのに役立つツールが見つかりません。
ツールやプラグインに詳しい人はいますか?
そのようなツールが利用できない場合は、ドキュメントなしで 6000 行の matlab コードを読むことについての提案を歓迎します。
MATLABmファイルのHTMLドキュメントを自動的に生成するツールであるM2HTMLを提案します。その機能リストの中で:
このツールの出力例については、このデモページをご覧ください。
depfun
関数を使用してコール グラフを作成することを検討することをお勧めします。詳細については、 http://www.mathworks.com/help/techdoc/ref/depfun.htmlを参照してください。
特に、引数を指定depfun
して呼び出し'-toponly'
、結果を反復処理することは、コール グラフを手動で構築する優れた方法であることがわかりました。残念ながら、これを使用して記述したコードにはアクセスできなくなりました。
コードがどのように実行されているかを正確に確認したいという意味だと思います。どの関数がどのサブ関数をいつ、どのくらいの時間実行するのでしょうか。
MATLABコードプロファイラーを見てください。次のようにコードを実行します。
>> profile on -history; MyCode; profile viewer
>> p = profile('info');
p
機能履歴が含まれています。上記でリンクした同じヘルプページから:
履歴データは、実行中に出入りする関数のシーケンスを記述します。このコマンドは、返す構造体
profile
のフィールドに履歴データを返します。FunctionHistory
履歴データは2行n列の配列です。最初の行にはブール値が含まれています。ここで、0
は関数への入り口を意味し、関数1
からの出口を意味します。2番目の行は、フィールドのインデックスによって入力または終了される関数を識別し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
コードが関数に出入りするタイミングを示すのに十分です。
私は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')