我正在制作一个需要带有.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循环。
答案 0 :(得分:3)
调试您的代码,您将很快看到出现了什么问题:
files = dir(fullfile(fichierref, '*.txt'));
..
filenames(d) = cellstr(files(d).name);
您正在构建文件名的单元格数组(注意:名称,而不是完整路径)。如果你已经检查了这个数组的竞争者,你已经看到了文件加载出了什么问题:
data = importdata(filenames{i},delimiterIn,headerlinesIn);
你在文件名上发出impordata
;当你没有指定完整路径时,matlab会在当前目录中查找文件(或者添加到matlab路径的其他目录,这里不重要)。
现在必须清楚,您将要切换到使用importdata,并使用您所追踪文件的完整路径。使用fullfile执行此操作:
other_directory = 'c:\whatever\it\might\be'
data = importdata(fullfile(other_directory,filename{i}),delimiterIn,headerlinesIn);
答案 1 :(得分:2)
要引用当前工作目录之外的文件,您需要文件的完整路径(或相对路径)。您可以使用fullfile
构建路径,就像在示例代码中所做的那样。在调用importdata
函数时,请使用完整(或相对)路径而不仅仅是文件名。
答案 2 :(得分:1)
您应该继续使用fullfile
。我只是发布了一个取自http://www.mathworks.com/help/matlab/ref/fullfile.html
f = fullfile('myfolder','mysubfolder','myfile.m')
f =
myfolder\mysubfolder\myfile.m