Если вам нужно знать, от каких других функций и скриптов зависит ваша программа, используйте один из методов, описанных ниже.
Для простого отображения всех программных файлов, на которые ссылается конкретная функция, выполните следующие шаги:
Напечатать clear
functions
чтобы удалить все функции из памяти (см. Примечание ниже).
Выполните функцию, которую вы хотите проверить. Обратите внимание, что аргументы функции, которые вы выбираете использовать в этом шаге, важны, потому что вы можете получить различные результаты при вызове одной и той же функции с различными аргументами.
Напечатать inmem
отображение всех программных файлов, которые использовались при запуске функции. Если вы хотите увидеть, какие файлы MEX также использовались, укажите дополнительный выход:
[mfiles, mexfiles] = inmem
Для более подробного отображения информации о зависимых функциях используйте matlab.codetools.requiredFilesAndProducts
функция. В дополнение к программным файлам matlab.codetools.requiredFilesAndProducts
показывает, какой MathWorks® продукты, от которых зависит конкретная функция. Если у вас есть функция, myFun
, который вызывает к edge
функция в Image Processing Toolbox™:
[fList,pList] = matlab.codetools.requiredFilesAndProducts('myFun.m');
fList
fList = 'C:\work\myFun.m'
Единственный необходимый программный файл - это сам файл функции, myFun
.
{pList.Name}'
ans = 'MATLAB' 'Image Processing Toolbox'
Файл, myFun.m
, требует обоих MATLAB® и набор Image Processing Toolbox.
Отчет о зависимостях показывает зависимости между файлами кода MATLAB в папке. Этот отчет используется для определения:
Какие файлы в папке требуются другим файлам в папке
Если какие-либо файлы в текущей папке будут неудачны, если вы удалите файл
Если какие-либо вызываемые файлы отсутствуют в текущей папке
В отчете не перечислены:
Файлы в toolbox/matlab
папка, поскольку эти файлы есть у каждого пользователя MATLAB.
Поэтому, если вы используете файл функции, который затеняет файл встроенной функции, MATLAB исключает оба файла из списка.
Файлы, вызываемые из анонимных функций.
Суперкласс для файла класса.
Файлы, вызываемые из eval
, evalc
, run
, load
, указатели на функцию и коллбэки.
MATLAB не разрешает эти файлы до момента выполнения, и поэтому отчет о зависимостях не может их обнаружить.
Некоторые файлы методов.
Отчет о зависимостях находит конструкторы классов, которые вы вызываете в файле MATLAB. Однако все методы, выполняемые на получившемся объекте, неизвестны для отчета. Эти методы могут существовать в classdef
файл, как отдельные файлы методов или файлы, принадлежащие суперклассу или суперклассам файла метода.
Для предоставления значимых результатов в отчете о зависимостях требуется следующее:
Когда вы запускаете отчет, путь поиска файлов так же, как и когда вы запускаете файлы в папке. (То есть текущая папка находится в верхней части пути поиска файлов.)
Файлы в папке, для которой вы запускаете отчет, не изменяют путь поиска файлов и не манипулируют им иным образом.
Файлы в папке не загружают переменные или иначе создают конфликты имен, которые приводят к различным программным элементам с таким же именем.
Примечание
Не используйте отчет о зависимостях, чтобы определить, какие файлы кода MATLAB кто-то другой должен запустить конкретный файл. Вместо этого используйте matlab.codetools.requiredFilesAndProducts
функция.
Используйте панель Текущая папка (Current Folder), чтобы перейти к папке, содержащей файлы, для которых требуется создать отчет о зависимостях.
На панели Текущая папка щелкните, а затем выберите Reports > Dependency Report.
В веб-браузере MATLAB откроется отчет о зависимостях.
При необходимости выберите одну или несколько опций в отчете следующим образом:
Чтобы просмотреть список всех файлов кода MATLAB (дочерние файлы), вызываемых каждым файлом в папке (родительский элемент), выберите Show child functions.
Отчет указывает, где каждая дочерняя функция находится, например, в указанном тулбоксе. Если отчет указывает, что местоположение дочерней функции неизвестно, это может быть вызвано:
Дочерняя функция не находится в пути поиска файлов.
Дочерняя функция не находится в текущей папке.
Файл был перемещен или удален.
Чтобы перечислить файлы, которые вызывают каждый файл кода MATLAB, выберите Show parent functions.
Отчет ограничивает родительские (вызывающие) функции функциями в текущей папке.
Чтобы включить локальные функции в отчет, выберите Show subfunctions. В отчете перечислены локальные функции непосредственно после основной функции и выделены серым цветом.
Нажмите Run Report on Current Folder.
На следующем изображении показан отчет о зависимостях. Это указывает, что chirpy.m
вызывает два файла в Signal Processing Toolbox™ и один в Image Processing Toolbox. Это также показывает, что go.m
вызывает mobius.m
, который находится в текущей папке.
Отчет о зависимостях включает следующее:
Список файлов MATLAB
Список файлов в папке, в которой выполнялся отчет о зависимостях. Щелкните ссылку в этом столбце, чтобы открыть файл в редакторе.
Дети
Функция или функции, вызываемые файлом MATLAB.
Щелкните ссылку в этом столбце, чтобы открыть файл MATLAB, указанный в той же строке, и перейдите к первой ссылке на вызываемую функцию. Например, предположим, что отчет о зависимостях появляется как показано на предыдущем изображении. Нажатие кнопки \images\images\erode.m откроется chirpy.m
и поместите курсор в первую линию, которая ссылается erode
. Другими словами, он не открывается erode.m
.
Несколько методов классов
Поскольку отчет является статическим анализом, он не может определять типы данных во время выполнения и, следовательно, не может идентифицировать конкретные методы класса, необходимые для файла. Если несколько методов класса соответствуют ссылочному методу, Отчет о зависимостях вставляет ссылку вопросительного знака рядом с именем файла. Вопросительный знак появляется на следующем изображении.
Щелкните ссылку вопросительного знака, чтобы отобразить методы класса с заданным именем, которые могут использоваться MATLAB. MATLAB перечисляет почти все файлы метода в пути поиска файлов, которые соответствуют указанному файлу метода (в данном случае freqresp.m
). Не волнуйтесь, если в список включены незнакомые вам методы классов и встроенные в MATLAB функции.
Вам не обязательно определять, какой файл будет использовать MATLAB. MATLAB определяет, какой метод использовать, в зависимости от объекта, который вызывается программой во время выполнения.