Comment puis-je générer une liste de dépendances de fonctions dans MATLAB?
-
01-07-2019 - |
Question
Afin de distribuer une fonction que j'ai écrite qui dépend d'autres fonctions que j'ai écrites et qui ont leurs propres dépendances et ainsi de suite sans distribuer tous les fichiers m que j'ai écrits, je dois déterminer la liste complète. des dépendances est pour un m-fichier donné. Existe-t-il un moyen intégré / librement téléchargeable de le faire?
Plus précisément, je suis intéressé par les solutions pour MATLAB 7.4.0 (R2007a), mais s’il existe une manière différente de le faire dans les versions antérieures, veuillez les ajouter ici.
La solution
Pour les nouvelles versions de Matlab (par exemple 2007 ou 2008), vous pouvez utiliser les fonctions intégrées:
- mlint
- rapport de dépendance et
- rapport de couverture
Une autre option consiste à utiliser le profileur de Matlab. La commande est profile, elle peut également être utilisée pour suivre les dépendances. Pour utiliser le profil, 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 le profileur n'est pas disponible, les deux fonctions suivantes sont peut-être (pour les versions antérieures à MATLAB 2015a):
- depfun
- depdir
Par exemple,
>> deps = depfun('foo');
donne une structure, deps, qui contient toutes les dépendances de foo.m.
De réponses 2 et 3 , les versions les plus récentes de MATLAB (post 2015a) utilisent à la place matlab.codetools.requiredFilesAndProducts
.
Voir les réponses
EDIT:
Mises en garde grâce aux commentaires de @Mike Katz
N'oubliez pas que le profileur ne fera que vous montrer les fichiers réellement utilisés dans ces pistes, donc si vous n'allez pas à travers chaque branche, vous pouvez avoir dépendances supplémentaires. le rapport de dépendance est un bon outil, mais ne résout que les dépendances statiques sur le chemin et juste pour les fichiers dans un répertoire unique.
Depfun est plus fiable mais vous donne tout ce à quoi il peut penser, et manque toujours LOAD et EVAL.
Autres conseils
Pour MATLAB 2015a
et les versions ultérieures, consultez de préférence matlab.codetools.requiredFilesAndProducts
ou doc matlab.codetools.requiredFilesAndProducts
car depfun
est marqué pour être supprimé dans une version ultérieure.