【发布时间】:2016-04-08 16:18:45
【问题描述】:
我有一个 matlab 脚本,它想要 load 一个 .mat 文件,该文件位于一个固定的目录中相对于脚本的位置。脚本本身可能相对于当前工作目录位于不同的位置,因此.mat 文件的位置相对于它是未知的。如何指定要加载的文件相对于正在执行的脚本的位置?
【问题讨论】:
标签: matlab relative-path
我有一个 matlab 脚本,它想要 load 一个 .mat 文件,该文件位于一个固定的目录中相对于脚本的位置。脚本本身可能相对于当前工作目录位于不同的位置,因此.mat 文件的位置相对于它是未知的。如何指定要加载的文件相对于正在执行的脚本的位置?
【问题讨论】:
标签: matlab relative-path
函数mfilename 返回当前运行的脚本的名称。但是,这不会返回脚本的完整路径。您可能想要这样,因此您可以指定 'fullpath' 选项以返回实际脚本本身的完整路径,包括脚本的名称。
您只需要文件所在的实际目录,因此首先使用mfilename 获取实际文件的完整路径,然后使用fileparts 实际提取文件所在的实际目录。 fileparts 返回文件所在的目录、文件名本身和扩展名。您只需要第一个输出参数而不关心其他输出。一旦你有了这个,你就可以使用实际的目录,然后在这个字符串后面加上你的.mat文件的位置:
p = mfilename('fullpath');
[pathstr,~,~] = fileparts(p);
d = fullfile(pathstr, 'path', 'to', 'your', 'file.mat');
fullfile 构建一个独立于操作系统的目录字符串,因此对于您要指示访问您的.mat 文件的每个子目录,将它们作为单独的输入字符串放置,直到您到达您想要的文件。 d 将包含您的.mat 文件相对于当前正在运行的脚本的完整路径,然后您可以将其用于load。
【讨论】: