Pregunta

Para distribuir una función que escribí y que depende de otras funciones que escribí que tienen sus propias dependencias, etc., sin distribuir cada archivo m que escribí, necesito averiguar cuál es la lista completa de dependencias. para un archivo m determinado.¿Existe alguna forma integrada o descargable gratuitamente de 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, agréguelas aquí.

¿Fue útil?

Solución

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

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

Otra opción es utilizar el generador de perfiles de Matlab.El comando es perfil, también se puede utilizar para rastrear dependencias.Para usar el perfil, puedes 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 el generador de perfiles no está disponible, entonces quizás las dos funciones siguientes lo estén (para versiones anteriores a MATLAB 2015a):

  1. depfun
  2. depdir

Por ejemplo,

>> deps = depfun('foo');

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

De respuestas 2, y 3, se utilizan versiones más recientes de MATLAB (posteriores a 2015a) matlab.codetools.requiredFilesAndProducts en cambio.

Ver respuestas

EDITAR:

Advertencias gracias a los comentarios de @Mike Katz

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

  • Depfun es más confiable, pero le da todas las cosas posibles que se le ocurra, y aún se pierde las cargas y las evaluaciones.

Otros consejos

Para MATLAB 2015a y después deberías mirar preferentemente matlab.codetools.requiredFilesAndProducts

o doc matlab.codetools.requiredFilesAndProducts

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top