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

Yau*_*ich 0 matlab

我在加载大量项目数据的地方编写代码。我想将我的路径名保留在相对于磁盘上该项目的某些位置的代码中,即未对其进行配置或硬编码。

Matlab中是否有功能可以执行以下操作?

在python中,我会这样写:

ROOT = os.path.dirname(__file__)
Run Code Online (Sandbox Code Playgroud)

Sue*_*ver 5

最好的方法是filepartsmfilename('fullpath')。(所有示例均假定包含这些语句的正在执行的m文件位于中/home/suever/code/stackoverflow.m

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

    /home/suever/code
Run Code Online (Sandbox Code Playgroud)

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

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

    /home/suever/code/data.mat
Run Code Online (Sandbox Code Playgroud)

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

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

    /home/suever/data.mat
Run Code Online (Sandbox Code Playgroud)

如果需要一个m文件所在的父目录,则可以申请fileparts两次,并且仅保留第二个输出。

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

    code
Run Code Online (Sandbox Code Playgroud)

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