如何获取包含.m文件的文件夹的相对路径

时间:2016-03-17 12:05:12

标签: matlab

我编写代码来加载大量项目数据。我想在代码中保存我的路径名相对于该项目在磁盘上的某个位置,即没有配置或硬编码。

matlab中有没有这样的功能?

在python中我会写:

ROOT = os.path.dirname('__file__')

2 个答案:

答案 0 :(得分:4)

执行此操作的最佳方法是将filepartsmfilename('fullpath')合并。 (所有示例都假设包含这些语句的执行m文件位于/home/suever/code/stackoverflow.m

mfiledir = fileparts(mfilename('fullpath'));

    /home/suever/code

然后,您可以使用fullfile构建所需的任何路径。现在,如果您有一个文件(data.mat)存储在同一目录中:

filename = fullfile(mfiledir, 'data.mat');

    /home/suever/code/data.mat

如果文件实际上在父目录中。

filename = fullfile(mfiledir, '..', 'data.mat');

    /home/suever/data.mat

如果您希望只是 m文件所在的父目录,您可以应用fileparts两次,只保留第二个输出。

[~, reldir] = fileparts(fileparts(mfilename('fullpath')));

    code

我建议在第一个示例中使用完整路径,因为它们完全独立于用户的当前工作目录。

答案 1 :(得分:0)

组织代码的更好方法是使用这样的函数:

function [ path ] = get_path()
     path = [regexprep(mfilename('fullpath'), ['\' filesep '[\w\.]*$'],'') filesep];
end

将其放在+foo/get_path.m文件中,然后调用类似foo.get_path()的内容,返回+foo文件夹的路径。