我一直在研究MATLAB脚本。 基本上,我有很多函数和数据文件(统称为内核):
我想整理一下。 这个想法是
functions
的子文件夹并保存其中的所有函数。 kernels
并保存其中的所有数据内核文件。稍后通过在运行时添加这些路径,所有脚本都应该能够访问这些函数和内核而不提供它们的完整路径,即脚本也应该在子文件中搜索它。
应用addpath(genpath(pwd));
适用于函数但无法访问内核文件
e.g。如果我想访问子文件夹naif0010.tls
中名为kernels
的文件,该怎么办?
它不起作用。任何建议。
示例:
% Add the current script directory and subfolders to search path
addpath(genpath(pwd));
% Load NASA Spice (mice) to the script here
% add MICE reference path to MATLAB
addpath('C:\Program Files\MATLAB\R2012b\extern\mice\src\mice');
addpath('C:\Program Files\MATLAB\R2012b\extern\mice\lib');
% Load leap second kernel
% If the leapsecond kernel is placed in script directory
% This file is present in pwd/kernel/naif0010.tls
cspice_furnsh('naif0010.tls');
答案 0 :(得分:1)
要记住几件事。首先,您当前的工作目录(pwd
)默认位于Matlab路径中,因此您通常不需要显式调用addpath
以便在那里使用脚本,函数或数据文件。 / p>
此外,在许多情况下,您可以通过提供相对路径而不是绝对路径来访问文件。在您的情况下,这看起来像
cspice_furnsh('kernels/naif0010.tls')
答案 1 :(得分:0)
我解决了一些工作,我知道这不是正确的答案,但现在我可以继续......
addpath(genpath(pwd));
% Basically just forming full path of the data file
leapSecondsFile = fullfile(pwd,'kernels','naif0010.tls');
cspice_furnsh(leapSecondsFile);
仍在等待正确答案或建议: - )
Update:
感谢nispio上面的评论,正确的方法是:
% Load current directory and subfolders
addpath(genpath(pwd)); % This is not necessary
cspice_furnsh('kernels\naif0010.tls');