从当前脚本目录的子文件夹中访问数据文件

时间:2013-11-18 19:51:22

标签: matlab

我一直在研究MATLAB脚本。 基本上,我有很多函数和数据文件(统称为内核):

我想整理一下。 这个想法是

  1. 创建一个名为functions的子文件夹并保存其中的所有函数。
  2. 另一个kernels并保存其中的所有数据内核文件。
  3. 稍后通过在运行时添加这些路径,所有脚本都应该能够访问这些函数和内核而不提供它们的完整路径,即脚本也应该在子文件中搜索它。

    应用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'); 
    

2 个答案:

答案 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');