MATLAB - 从目录中读取文件?

Dar*_*ick 13 directory matlab file

我希望从目录中读取文件,并迭代地对每个文件执行操作.此操作不需要更改文件.

我明白我应该使用for循环.到目前为止,我尝试过:

FILES = ls('path\to\folder');

for i = 1:size(FILES, 1);
    STRU = pdbread(FILES{i});
end
Run Code Online (Sandbox Code Playgroud)

这里返回的错误告诉我,一个新手,使用ls()列出目录不会将内容分配给数据结构.

其次,我尝试创建一个文件,在每行包含文件的路径,例如,

C:\Documents and Settings\My Documents\MATLAB\asd.pdb
C:\Documents and Settings\My Documents\MATLAB\asd.pdb
Run Code Online (Sandbox Code Playgroud)

然后我使用以下代码读取此文件:

fid = fopen('paths_to_files.txt');
FILES = textscan(fid, '%s');
FILES = FILES{1};
fclose(fid);
Run Code Online (Sandbox Code Playgroud)

此代码读取文件,但创建一个换行符中存在空格的换行符,即

'C:\Documents'
'and'
'Setting\My'
'Documents\MATLAB\asd.pdb'
Run Code Online (Sandbox Code Playgroud)

最后,我打算使用for循环

for i = 1:size(FILES, 1)
    PDB = pdbread(char(FILES{i}));
Run Code Online (Sandbox Code Playgroud)

读取每个文件,但pdbread()抛出错误,声明文件格式不正确或不存在.

这是因为读入路径文件时路径的换行符分隔?

任何帮助或建议都非常适用.

谢谢,S :-)

The*_*ist 21

首先获取符合条件的所有文件的列表:(
在本例中为C:\ My Documents\MATLAB中的pdb文件)

matfiles = dir(fullfile('C:', 'My Documents', 'MATLAB', '*.pdb'))
Run Code Online (Sandbox Code Playgroud)

然后按如下方式读入文件:(
这里i可以从1到文件数量不等)

data = load(matfiles(i).name)
Run Code Online (Sandbox Code Playgroud)

重复此操作,直到您阅读完所有文件.


一个简单的替代方法,如果你可以重命名文件如下: -

首先保存reqd.文件为1.pdb,2.pdb,3.pdb,...等

然后在Matlab中迭代读取它们的代码如下:

for i = 1:n
    str = strcat('C:\My Documents\MATLAB', int2str(i),'.pdb'); 
    data = load(matfiles(i).name);

% use our logic here  
% before proceeding to the next file

end
Run Code Online (Sandbox Code Playgroud)