В MATLAB существует примерно 3 способа определения функций: файлы без комментариев .m
, файлы .p
и скомпилированный код (например, DLL, MEX).
Знание , где определена функция, может быть полезно в нескольких случаях, например, когда в какую-то функцию, находящуюся вне нашего контроля, было внесено критическое изменение, и мы хотели бы попытаться вернуться к старой версии в надежде заставить наш код снова работать; или при попытке реинжиниринга какого-то нераскрытого алгоритма.
Функция which
обычно очень хороша для определения определений функций и их местоположения (что работает для .m
, .p
и MEX), но не очень полезна, когда речь идет о функциях совместно используемых библиотек, где ( в лучшем случае) указывает на файл документации только для комментариев:
>> which _mcheck
built-in (undocumented)
>> which svd
built-in (D:\Program Files\MATLAB\R2019a\toolbox\matlab\matfun\svd)
Если это так, если во время выполнения моего кода вызывается функция, найденная в общей библиотеке, как найти конкретный файл (DLL), в котором он находится ?