Как я могу сгенерировать список функциональных зависимостей в MATLAB?

StackOverflow https://stackoverflow.com/questions/95760

Вопрос

Чтобы распространить написанную мной функцию, которая зависит от других написанных мной функций, которые имеют свои собственные зависимости и так далее, не распространяя каждый m-файл, который я когда-либо писал, мне нужно выяснить, каков полный список зависимостей для данного m-файла.Есть ли встроенный / свободно загружаемый способ сделать это?

В частности, меня интересуют решения для MATLAB 7.4.0 (R2007a), но если есть другой способ сделать это в более старых версиях, обязательно добавьте их сюда.

Это было полезно?

Решение

Для более новых версий Matlab (например, 2007 или 2008) вы могли бы использовать встроенные функции:

  1. млинт
  2. отчет о зависимостях и
  3. отчет о покрытии

Другой вариант - использовать профилировщик Matlab.Команда называется profile, ее также можно использовать для отслеживания зависимостей.Чтобы использовать profile, вы могли бы сделать

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

Если профилировщик недоступен, то, возможно, следующие две функции (для версии до MATLAB 2015a):

  1. депфан
  2. депдир

Например,

>> deps = depfun('foo');

предоставляет структуру deps, которая содержит все зависимости foo.m.

Из ответов 2, и 3, более новые версии MATLAB (после 2015a) используют matlab.codetools.requiredFilesAndProducts вместо этого.

Смотрите ответы

Редактировать:

Предостережения благодаря комментариям @Mike Katz

  • Помните, что профилировщик будет показывать вам только файлы, которые фактически использовались в этих запусках, поэтому, если вы не пройдетесь по каждой ветке, у вас могут возникнуть дополнительные зависимости. Отчет о зависимостях - хороший инструмент, но разрешает статические зависимости только от пути и только для файлов в одном каталоге.

  • Depfun более надежен, но предоставляет вам все возможные возможности, о которых он может подумать, и по-прежнему пропускает LOAD и EVAL.

Другие советы

Для MATLAB 2015a и позже вам желательно взглянуть на matlab.codetools.Требуемые файлы и продукты

или doc matlab.codetools.requiredFilesAndProducts

потому что depfun помечен как подлежащий удалению в будущей версии.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top