在matlab中加载文件与脚本位置相关

时间:2017-05-02 19:48:55

标签: matlab

我在matlab中有一个简单的脚本,我想加载一个文件。它似乎只有在文件与脚本位于同一目录时才有效。如果我将文件添加到目录,它不会读取它。

例如:

fileID = fopen('myfile','r' ,'n', 'US-ASCII');

但当我将myfile放入files时:

fileID = fopen('files/myfile','r' ,'n', 'US-ASCII');

fileID = fopen('./files/myfile','r' ,'n', 'US-ASCII');

我得到一个-1作为fileID。文件无法读取。

2 个答案:

答案 0 :(得分:1)

根据评论,这种情况正在发生,因为您很可能已将脚本所在的路径添加到MATLAB路径中,但您没有将文件所在的子目录添加到路径中。这就是它无法找到文件的原因。因此,为了在将来避免这种情况,您需要将MATLAB当前运行的目录(即工作目录)物理地更改为存储脚本的位置。

然后,本地引用应该起作用。您可以使用cd函数执行此操作,在MATLAB窗口的顶部看到目录列表,单击右侧的箭头并拉下下拉菜单以更改目录,键入通过单击目录列表中的任何空白区域以启用文本框来获取所需的实际目录:

enter image description here

...或者如果您在MATLAB编辑器中运行代码,它会请求您更改目录,因为您尝试运行的脚本当前不在工作目录中。

答案 1 :(得分:0)

您还可以使用mfilenamefilepartsgenpathaddpath以编程方式在脚本目录中添加子文件夹:

[dir, ~, ~] = fileparts(mfilename('fullpath')); % locate your script directory
addpath(genpath(fullfile(dir))); % add the folder and all subfolders to Matlab search directory

% then load your file.
fileID = fopen('myfile','r' ,'n', 'US-ASCII')

如果将所有输出放在与脚本文件相同的目录中也很重要,则可以cd到脚本目录:

cd(dir)