Найти местоположение текущего m-файла в MATLAB - PullRequest
46 голосов
/ 27 апреля 2010

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

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

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

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

Ответы [ 3 ]

66 голосов
/ 27 апреля 2010

имя файла или лучше mfilename('fullpath')

18 голосов
/ 13 июня 2012

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

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

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

10 голосов
/ 06 июля 2011

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

S = dbstack('-completenames');
S(1).file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...