Comment puis-je générer une liste de dépendances de fonction dans MATLAB?

afin de distribuer une fonction que j'ai écrite qui dépend d'autres fonctions que j'ai écrites qui ont leurs propres dépendances et ainsi de suite sans distribuer chaque m-fichier que j'ai jamais écrit, je dois comprendre ce que la liste complète des dépendances est pour un m-fichier donné. Est-il intégré/téléchargeable librement façon de le faire?

spécifiquement je suis intéressé par les solutions pour MATLAB 7.4.0 (R2007a), mais s'il y a une façon différente de le faire dans les versions plus anciennes, par tous les moyens merci de les ajouter ici.

36
demandé sur Amro 2008-09-18 23:03:18

2 réponses

pour les nouvelles versions de Matlab (par exemple 2007 ou 2008) vous pouvez utiliser les fonctions intégrées:

  1. mlint
  2. rapport de dépendance, et
  3. rapport de couverture

une autre option est d'utiliser le profileur de Matlab. La commande est profile, elle peut aussi être utilisée pour suivre les dépendances. Pour utiliser profile, vous pouvez faire

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

si profiler n'est pas disponible, alors peut-être les deux fonctions suivantes sont (pour pré-MATLAB 2015a):

  1. depfun
  2. depdir

Par exemple,

>> deps = depfun('foo');

donne une structure, deps, qui contient toutes les dépendances de foo.m.

réponses 2 et 3, versions plus récentes de MATLAB (post 2015a) utiliser matlab.codetools.requiredFilesAndProducts à la place.

Voir les réponses

EDIT:

mises en garde merci à @Mike Katz commentaires

  • Rappelez-vous que le profileur ne vous montrer les fichiers qui ont été effectivement utilisés dans ces courses, donc si tu n'y vas pas à travers chaque branche, vous pouvez avoir dépendances supplémentaires. Le le rapport de dépendance est un bon outil, mais ne résout statique dépendances sur le chemin et juste pour les dossiers dans un seul répertoire.

  • Depfun est plus fiable mais vous donne tout ce qu'il peut penser de, et manque encore de CHARGE et EVAL.

35
répondu Azim 2017-05-23 12:25:42

MATLAB 2015a et, plus tard, de préférence, vous devriez regarder matlab.outils de code.requiredFilesAndProducts

ou doc matlab.codetools.requiredFilesAndProducts

parce que depfun est marqué pour être supprimé dans une version future.

6
répondu Jonas Stein 2015-07-18 22:20:12