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