¿Cómo puedo generar una lista de dependencias de funciones en MATLAB?

Para distribuir una función que he escrito que depende de otras funciones que he escrito que tienen sus propias dependencias y demás sin distribuir cada archivo m que he escrito, necesito averiguar cuál es la lista completa de dependencias. para un m-archivo dado. ¿Hay una forma incorporada / libremente descargable para hacer esto?

Específicamente, estoy interesado en soluciones para MATLAB 7.4.0 (R2007a), pero si hay una forma diferente de hacerlo en versiones anteriores, por favor, agréguelas aquí.

Para las versiones más recientes de Matlab (por ejemplo, 2007 o 2008), puede usar las funciones integradas:

  1. mlint
  2. informe de dependencia y
  3. informe de cobertura

Otra opción es usar el generador de perfiles de Matlab. El comando es perfil, también se puede usar para rastrear dependencias. Para usar el perfil, podrías hacer

>> 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 no está disponible, entonces tal vez las siguientes dos funciones son (para pre-MATLAB 2015a):

  1. depfun
  2. depdir

Por ejemplo,

 >> deps = depfun('foo'); 

da una estructura, deps, que contiene todas las dependencias de foo.m.

De las respuestas 2 y 3 , las versiones más recientes de MATLAB (post matlab.codetools.requiredFilesAndProducts ) utilizan en matlab.codetools.requiredFilesAndProducts lugar matlab.codetools.requiredFilesAndProducts .

Ver respuestas

EDITAR:

Advertencias gracias a @Mike Katz comentarios

  • Recuerde que Profiler solo le mostrará los archivos que se usaron realmente en esas ejecuciones, por lo que si no visita todas las sucursales, puede tener dependencias adicionales. El informe de dependencia es una buena herramienta, pero solo resuelve las dependencias estáticas en la ruta y solo para los archivos en un solo directorio.

  • Depfun es más confiable, pero te ofrece todo lo que se te ocurra, y aún echa de menos LOAD y EVAL.

Para MATLAB 2015a y posteriores, debería mirar preferiblemente matlab.codetools.requiredFilesAndProducts

o doc matlab.codetools.requiredFilesAndProducts

porque depfun está marcado para ser eliminado en una versión futura.