在问这个问题之后:
我如何阅读以下文件 使用for循环:(可循环 忽略文件名中的字符?)
abc-1.TXT cde-2.TXT ser-3.TXT
wsz-4.TXT aqz-5.TXT iop-6.TXT
......(事实上,我有500个文件)
我必须在开头添加什么 这个循环??
表示i = 1:1:500
nom_fichier = strcat(['MyFile .......'num2str(i) '.TXT']);
我尝试了以下解决方案:
Names = dir('MyFile\*.TXT');
for i = 1:500
fn = ['MyFile',filesep,Names{i},'-',num2str(i),'.TXT'];
data = load(fn);
.....
运行程序后,我收到以下错误:
??? Cell contents reference from a non-cell array object.
你能帮我解决这个问题吗? 我的目标是阅读500个文件的内容。
答案 0 :(得分:5)
你正试图拼凑一个解决方案而不考虑你在做什么。
你需要查看并理解dir返回的内容。
Names = dir('MyFile\*.TXT');
它返回一个结构。看到此结构的一个字段是名称字段。所以试试这个:
Names(1).name
ans =
abc-1.TXT
看到它将是文件的完整名称,无需构建它。你现在可以围绕这个结构进行循环,
for i = 1:numel(Names)
data = load(Names(i).name);
% do stuff here...
end
如果您希望此处的名称列表仅作为单元格数组,请执行以下操作:
Names = {Names.name};
现在,看看这个变量中的内容。现在是一个单元阵列。不要试图盲目地使用它而不考虑。这将是该目录中每个txt文件的完整名称列表。您根本不需要再建立名称。只需对每个文件名使用load。