web-dev-qa-db-ja.com

MATLABで関数従属性のリストを生成するにはどうすればよいですか?

これまでに作成したすべてのmファイルを配布せずに、独自の依存関係などを持つ他の関数に依存する、作成した関数を配布するには、依存関係の完全なリストを把握する必要があります。特定のmファイルに対して。これを行うための組み込み/無料でダウンロード可能な方法はありますか?

特にMATLAB7.4.0(R2007a)のソリューションに興味がありますが、古いバージョンで別の方法がある場合は、必ずここに追加してください。

36
rmukhopadhyay

Matlabの新しいリリース(2007または2008など)の場合、組み込み関数を使用できます。

  1. mlint
  2. 依存関係レポートと
  3. カバレッジレポート

別のオプションは、Matlabのプロファイラーを使用することです。コマンドはprofileであり、依存関係を追跡するためにも使用できます。プロファイルを使用するには、次のことができます

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

プロファイラーが使用できない場合は、おそらく次の2つの関数が使用されます(MATLAB 2015aより前の場合)。

  1. depfun
  2. depdir

例えば、

>> deps = depfun('foo');

foo.mのすべての依存関係を含む構造体depsを提供します。

回答 2 およびから、MATLABの新しいバージョン(2015a以降)は代わりにmatlab.codetools.requiredFilesAndProductsを使用します。

答えを見る

編集:

@MikeKatzのコメントに感謝する警告

  • プロファイラーはそれらの実行で実際に使用されたファイルのみを表示するため、すべてのブランチを通過しない場合は、追加の依存関係がある可能性があることに注意してください。依存関係レポートは優れたツールですが、パス上の静的な依存関係と、単一のディレクトリ内のファイルのみを解決します。

  • Depfunはより信頼性がありますが、考えられるすべてのことを提供し、それでもLOADとEVALを見逃します。

35
Azim

ために MATLAB 2015a以降は、できれば matlab.codetools.requiredFilesAndProducts を確認する必要があります。

またはdoc matlab.codetools.requiredFilesAndProducts

depfunは将来のリリースで削除されるようにマークされているためです。

6
Jonas Stein