我正在尝试以下代码:
RENDER4CNN_ROOT = fullfile(mfilename('fullpath'),'../../../');
PASCAL3D_DIR = fullfile(RENDER4CNN_ROOT, 'datasets/pascal3d/');
addpath(fullfile(PASCAL3D_DIR, 'VDPM'));
addpath(fullfile(PASCAL3D_DIR, 'Annotation_tools'));
addpath(RENDER4CNN_ROOT);
它给我“警告:名称不存在或目录:”,我也无法cd。
该代码比我的Matlab版本稍旧。有什么问题?这段代码是为其他操作系统编写的吗?
修改
ls -al
输出
drwxr-xr-x@ 9 Goldname staff 288 Oct 8 2016 .
drwxr-xr-x@ 14 Goldname staff 448 Oct 8 2016 ..
-rwxr-xr-x@ 1 Goldname staff 5686 Oct 8 2016 get_voc12train_truncation_stats.m
-rwxr-xr-x@ 1 Goldname staff 1847 Oct 8 2016 get_voc12train_view_stats.m
drwxr-xr-x@ 65 Goldname staff 2080 Jun 15 15:27 matlab_kde_package
-rwxr-xr-x@ 1 Goldname staff 2684 Oct 8 2016 run_sampling.m
-rwxr-xr-x@ 1 Goldname staff 2047 Oct 8 2016 sample_truncations.m
-rwxr-xr-x@ 1 Goldname staff 2954 Oct 8 2016 sample_viewpoints.m
-rwxr-xr-x@ 1 Goldname staff 442 Jun 15 17:15 setup_path.m
从我所见,mfilename
使用不正确?它输出目录和文件,即使在末尾附加了“ ..”,我的命令行也无法将其输入到该目录和文件。
我正在使用MacOS。命令行似乎无法执行
之类的操作cd /directory/file/..
答案 0 :(得分:1)
mfilename('fullpath')
输出带有完整路径的运行其M文件的名称。在您的情况下,根据评论,此为/Foo/RenderForCNN-master/render_pipeline/kde/setup_path
。 setup_path
是M文件的名称(减去.m
扩展名)。
fullfile(mfilename('fullpath'),'../../../')
因此创建路径/Foo/RenderForCNN-master/render_pipeline/kde/setup_path/../../../
。这是无效路径,因为setup_path
不存在。如果要添加文件扩展名,它将显示为/Foo/RenderForCNN-master/render_pipeline/kde/setup_path.m/../../../
,这也不是有效路径。
您需要从mfilename
的输出中删除M文件的名称:
fullfile(fileparts(mfilename('fullpath')),'../../../')
您现在需要确保以这种方式实际到达了预期的目录,有可能不再需要..
之一。
答案 1 :(得分:0)
打印此变量RENDER4CNN_ROOT
并检查是否可以手动cd进入它。
或
运行cd RENDER4CNN_ROOT
如果收到错误,则必须根据脚本位置相应地修改此参数'../../../'
。
由于addpath()
,您正在收到警告,因为它找不到fullfile(PASCAL3D_DIR, 'VDPM')
给出的路径