Matlab:访问相对于工作目录的文件

时间:2019-05-13 17:50:39

标签: matlab

我注意到大多数访问文件的Matlab函数,例如load()通过在当前路径中找到一些包含与这些路径匹配的文件或目录的目录来解析相对路径。例如。如果当前工作目录是load('foo/bar.m')/home/someuser/dir1/foo/bar.m在搜索路径上,则调用/home/someuser/dir2/foo/bar将在/home/someuser/dir2上加载/home/someuser/dir1

我发现这很容易出错并且容易出错,我该如何访问相对于当前工作目录的文件呢?

1 个答案:

答案 0 :(得分:1)

您知道,Matlab可以解析相对路径和绝对路径。但是我的建议可以减轻您的麻烦,

  1. 在每个(相关/主要)脚本中,请确保您的工作区是以下脚本的位置:

PATH.SCRIPT = fileparts(mfilename('fullpath')) cd(PATH.SCRIPT)

  1. 然后,始终使用以下命令调用具有绝对路径的函数:

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'])

  1. 如果可能,请尽量不要弄乱Matlab的默认路径,并在初始化工作区时调用restoredefaultpath。这样可以减少路径中可能存在名称冲突的伪造文件夹的可能性。

  2. 正如其他人所提到的,./['.', filesep]也与当前文件夹一起提供。

  3. 就像@CrisLuengo提到的那样,与其说filesep,不如说是用fullfile组成路径,例如:load(fullfile(PATH.SCRIPT, '..', 'file_at_upper_dir_name'))