Я нашел решение здесь :
Вы можете использовать следующую функцию, чтобы получить папку исполняемого файла exe
:
function currentDir = getcurrentdir()
if isdeployed % Stand-alone mode.
[status, result] = system('path');
currentDir = char(regexpi(result, 'Path=(.*?);', 'tokens', 'once'));
else % MATLAB mode.
currentDir = pwd;
end
Вызовитеиспользуйте и используйте cd
в функции открытия графического интерфейса:
currentDir = getcurrentdir();
cd(currentDir);
Я создал тестовое приложение guide
и использовал deploytool
для компиляции и упаковки для внешнего развертывания.
Для тестирования я добавил текстовую метку в графический интерфейс (имя тега: text2
).
В функции открытия графического интерфейса я добавил следующий код:
% --- Executes just before GuideApp is made visible.
function GuideApp_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
handles.text2.String = 'Starting...';
pause(1);
currentDir = getcurrentdir();
%Set the label's text to display currentDir.
handles.text2.String = currentDir;
%Change directory to the directory of the exe file.
cd(currentDir);
%Create a file in the directory (just for testing):
f = fopen('currentDir.txt', 'w');fprintf(f, '%s\r\n', currentDir);fclose(f);
% Update handles structure
guidata(hObject, handles);
Приведенное выше решение работает правильно:
Текст метки отображает путь к exe-файлу.
currentDir.txt
файл создается по пути к exe-файлу.