Найти местоположение текущего m-файла в MATLAB

43

Я работаю над своим MATLAB кодом в нескольких разных местах, и это действительно поможет, если я смогу сделать код осознавая свое местоположение на компьютере. Я думаю, что есть функция, которая дает мне именно эту информацию, но я не могу вспомнить, что она называется, или найти ее в Google.

Идея состоит в том, что у меня есть функция myFunc, которая нуждается в файле в своем собственном каталоге, который может находиться в разных местах на разных компьютерах. Поэтому в myFunc я хочу сделать что-то вроде этого:

dir = theFunctionImLookingFor;
system(fullfile(dir, 'someApp.exe'));

(Также может быть, что функция, которую я ищу, не возвращает каталог, но имя каталога + m файла, но это мало чем отличается от меня.)

Теги:

4 ответа

57
Лучший ответ

mfilename или лучше mfilename('fullpath')

  • 0
    Большое спасибо, Михаил!
  • 4
    Это только возвращает путь при запуске полного файла. Возвращает пустую строку при выполнении из командного окна или при запуске отдельной ячейки.
11

При работе с классами мне часто нравится сохранять связанные данные в каталоге классов. Я использую which, чтобы получить путь, а затем fileparts, чтобы отрубить его.

[folder, name, ext] = fileparts(which('object'));

Где "объект" может быть именем функции или класса. Преимущество этого метода для меня заключается в том, что вы можете его вызывать из-за пределов mfile. Это необходимо, если вам нужно получить путь к производному классу из базового класса, например.

8

Другой метод, через Вальтер Роберсон на сайте ответов MATLAB, используя функцию dbstack:

S = dbstack('-completenames');
S(1).file
1

Для этого вы должны использовать mfilename и cd.

mfilename вернет имя исполняемого m файла. cd сам будет печатать текущий каталог

  • 0
    Отлично, очень просто и эффективно. Просто команда CD :))

Ещё вопросы

Сообщество Overcoder
Наверх
Меню