1

我正在制作一个程序,它需要一个包含文件的参考文件夹.txt。这些文件是自动读取的。在下一步中,要求用户选择一个文件,程序将读取指定的文件。

问题是,我希望引用位于不同的文件夹中(保持不变)。如果我当前的文件夹是包含用户数据的文件夹,我如何阅读我的参考文件?

这是自动文件打开部分的代码行,就像现在一样:

fichierref = 'H:\MATLAB\Archive_08112012';
files = dir(fullfile(fichierref, '*.txt'));
numberOfFiles = numel(files);
for d = 1:numberOfFiles
   filenames(d) = cellstr(files(d).name);
end

它确实会自动打开文件,但前提是我当前的文件夹是 Archive_08112012。

编辑:

我会添加这个。这就是我打开文件的方式。

headerlinesIn = 11;
delimiterIn=' ';
if numberOfFiles > 1
for i=1:numberOfFiles
     data = importdata(filenames{i},delimiterIn,headerlinesIn);

如果 numberOfFiles = 1,它具有完全相同的行,但没有 for 循环。

4

3 回答 3

3

调试你的代码,你会很快发现出了什么问题:

files = dir(fullfile(fichierref, '*.txt'));
..
filenames(d) = cellstr(files(d).name);

您正在构建文件名的单元格数组(注意:名称,而不是完整路径)。如果你检查了这个数组的内容,你会看到文件加载出了什么问题:

 data = importdata(filenames{i},delimiterIn,headerlinesIn);

您发出impordata文件名;当您不指定完整路径时,matlab 会在当前目录(或添加到 matlab 路径的其他目录,这里不重要)中查找文件。

现在必须清楚,您需要切换到将 importdata 与您所追求的文件的完整路径一起使用。使用完整文件执行此操作:

other_directory = 'c:\whatever\it\might\be'
data = importdata(fullfile(other_directory,filename{i}),delimiterIn,headerlinesIn);
于 2013-02-11T20:23:03.933 回答
2

要引用当前工作目录之外的文件,您需要该文件的完整路径(或相对路径)。您可以使用 构建路径fullfile,就像您在示例代码中所做的那样。importdata调用函数时使用完整(或相对)路径,而不仅仅是文件名。

于 2013-02-11T20:18:36.510 回答
1

你应该继续使用fullfile. 我只是发布了一个取自http://www.mathworks.com/help/matlab/ref/fullfile.html的示例

f = fullfile('myfolder','mysubfolder','myfile.m')

f =
myfolder\mysubfolder\myfile.m
于 2013-02-11T19:53:57.250 回答