Как вы знаете, Matlab может разрешать как относительные, так и абсолютные пути. Но мои предложения по решению вашей проблемы с меньшими головными болями:
- При каждом (релевантном / главном) сценарии убедитесь, что в вашем рабочем пространстве находится расположение сценариев с:
PATH.SCRIPT = fileparts(mfilename('fullpath'))
cd(PATH.SCRIPT)
- Затем всегда вызывайте функции с абсолютными путями, используя:
load([PATH.SCRIPT, filesep, 'filename'])
или же
load([PATH.SCRIPT, filesep, '..' , filesep, 'file_at_upper_dir_name'])
или же
load([PATH.SCRIPT, filesep, 'subfolder' , filesep, 'file_at_lower_dir_name'])
Если возможно, постарайтесь не слишком путаться со стандартным путем Matlab, а при инициализации вашего рабочего пространства вызовите restoredefaultpath
. Это уменьшает вероятность того, что на вашем пути есть ложная папка, в которой могут происходить конфликты имен.
Как уже упоминалось, ./
или ['.', filesep]
также предоставляет текущую папку.
Как упоминает @CrisLuengo, вместо filesep
можно предпочесть составлять пути с fullfile
, например: load(fullfile(PATH.SCRIPT, '..', 'file_at_upper_dir_name'))