根据运行脚本matlab添加文件夹路径

Add folder path based on run script matlab

不知道为什么这不再有效。很简单的。我有一个脚本,该脚本在同一路径中有一个文件夹。该文件夹包含脚本运行所需的一系列 m 文件。

本来我只是想用

addpath('.../utilities/);

脚本首次出现时 运行。但最近我开始收到这个错误

Warning: Name is nonexistent or not a directory: ...\utilities

In path (line 109)

In addpath (line 88)

In Myrunningcode (line 101)

我也不知道为什么。

我通过 运行以下代码解决了这个问题

p = mfilename('fullpath');
[filepath,~,~] = fileparts(p);
addpath([filepath,'/utilities/']);

至少我想知道为什么会出现这个错误

这是我的目录设置。我使用 windows 10 和 matlab 2016a。

包含相对文件夹的正确方法是:

addpath('./utilities/');

有一个点。

自从存在相关文件夹 AFAIK 以来,这一直有效(并且有效),因此您应该能够使用它而不必担心弃用

问题可能是您的当前目录 (pwd) 与文件位置不同。 相对目录不是相对于当前脚本,而是相对于 pwd,因此 mfilename 解决方法解决了您的问题。

第一个解决方案是你自己的,但你可以在一行中完成:

addpath( fullfile( fileparts( mfilename('fullpath') ), 'utilities' ) );

然后检查您的文件是否已经在路径上的最快方法是使用 which:

% Assuming that myFile.m is within the utilities folder, and not shadowed elsewhere.
% If utilities is on the path, which('myFile') will not be empty.
if isempty( which( 'myFile' ) )
    addpath( fullfile( fileparts( mfilename('fullpath') ), 'utilities' ) );
end

或者,您可以将上述检查与 persistent 标志变量配对,这样您就不必在重新输入函数时重复检查。

请注意,addpath 并不是特别慢,这是 genpath 如果您要添加大量子目录,则要避免。

旁白:最好使用 fullfile 而不是手动连接(OS 依赖)文件分隔符。即使您始终使用相同的 OS.

,也可以减少错误空间(例如双斜杠)