2016-07-11 342 views
0

我有一个主要代码和一个从.dat文件导入数据的函数,我想导入很多情况,因此我创建了几个目录来构造文件。Matlab fopen变量路径

下面是函数的相关部分我使用:

function [time_,cm,cd_,cl,clf1,clr] = importcd2(filename, startRow, endRow) 

formatSpec = '%7s%33s%24s%24s%24s%s%[^\n\r]'; 

%% Open the text file. 
fileID = fopen(filename,'r'); 

textscan(fileID, '%[^\n\r]', startRow(1)-1, 'ReturnOnError', false); 

然后,当我想从主代码调用的函数,我用:

[a,~,b,~,~,~] = importvar('/folder1/folder2/folder3/folder4/folder5/file1.dat', 1, inf); 

在其中a和b是我想要从.dat文件导出的变量。我想要做的是改变函数,这样fopen可以打开一个完整的路径,而不仅仅是文件的ID(file1.dat),因为我更喜欢有一些目录而不是30 .dat文件或更多相同的目录。可能吗?我的问题不同于How can I load 100 files with similar names and/or string in just one step in MATLAB?

在此先感谢!

+0

的可能重复[我怎样才能加载100个文件具有类似名称和/或字符串在MATLAB只是一个步骤?](http://stackoverflow.com/questions/15366374/how-can-i-load-100-files-with-similar-names-and-or-string-in- just-one-in-in-ma) – GameOfThrows

+0

formatSpec定义了什么? –

+0

@MatthiasW。它由MATLAB自动定义,以根据.dat文件的格式提取值 –

回答

0

可以使用dir命令来获取文件夹中的所有.dat文件,然后使用for循环去了所有的人

function [time_,cm,cd_,cl,clf1,clr] = importcd2(dirname, startRow, endRow) 
DatFiles = dir([dirname filesep '*.dat']); 

for k=1:numel(DatFiles) 
    fileID = fopen(DatFiles(k).Name,'r'); 
    ... 
end