我希望从目录中读取文件,并对每个文件进行迭代操作。此操作不需要更改文件。
我知道我应该为此使用for循环。到目前为止,我已经尝试过:
FILES = ls('path\to\folder'); for i = 1:size(FILES, 1); STRU = pdbread(FILES{i}); end 这里返回的错误向我(一个新手)建议,使用ls()列出目录不会将内容分配给数据结构。
其次,我尝试创建一个文件,该文件的每一行均包含文件的路径,例如,
C:\Documents and Settings\My Documents\MATLAB\asd.pdb C:\Documents and Settings\My Documents\MATLAB\asd.pdb 然后,我使用以下代码读取该文件:
fid = fopen('paths_to_files.txt'); FILES = textscan(fid, '%s'); FILES = FILES{1}; fclose(fid); 此代码读取文件,但在路径中存在空格的地方创建换行符,即
'C:\Documents' 'and' 'Setting\My' 'Documents\MATLAB\asd.pdb' 最终,我打算使用for循环
for i = 1:size(FILES, 1) PDB = pdbread(char(FILES{i})); 读取每个文件,但pdbread()引发错误,表明文件格式不正确或不存在。
这是由于在读取路径文件时路径的换行符分隔吗?
任何帮助或建议,不胜感激。
谢谢,S :-)
回答:
首先获取符合您条件的所有文件的列表:
(在这种情况下,
C:\ My Documents \ MATLAB中的 pdb文件)
matfiles = dir(fullfile('C:', 'My Documents', 'MATLAB', '*.pdb')) 然后读取文件,如下所示:
(这里
i可以从1到文件数不等)
data = load(matfiles(i).name) 重复此操作,直到已读取所有文件。
如果可以
重命名文件, 则更简单的选择如下:
首先保存需求。文件为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
更多&回答...