大家好,我正在尝试制作一个循环文件以读取多个文件,这是我到目前为止所做的:
=query('Form responses 1'!A:Z,"order by A desc")
例如,我想要这两个文件,但似乎只能读取其中一个
anoini = 1980;
anofin = 1981;
mesini = 1;
mesfin = 1;
diai=1;
diaf=1;
nano = (anofin-anoini)+1;
if (mesini == 1) || (mesini == 3) || (mesini == 5) || (mesini == 7) || (mesini == 8) || (mesini == 10) || (mesini == 12)
lmes = 31;
elseif (mesini == 4) || (mesini == 6) || (mesini == 9) || (mesini == 11)
lmes = 30;
elseif (mesini == 2)
lmes = 28;
end
for idia=1:lmes
for iano = anoini:anofin
for nn = 1:nano
D_1{nn,idia} = load(sprintf('F:\\salidas_nam\\%d\\%d%0.2u%0.2u06_NAM_day01.dat',iano,iano,mesini,idia));
end
end
end
这个想法是使它自动化,以便我可以选择要阅读的年份,而不必使用"F:\salidas_nam\1980\1980010106_NAM_day01.dat"
"F:\salidas_nam\1981\1981010106_NAM_day01.dat"
,如果有人知道如何用另一种方式,我会很感激的。
答案 0 :(得分:0)
我认为问题出在你的内在循环中。您正在遍历nn
,但没有在文件名的构造中使用它。因此,您每次将每个文件加载两次:
因此,您的输出如下所示(重复的文件):
D_1{1,1} = F:\salidas_nam\1980\1980010106_NAM_day01.dat
D_1{2,1} = F:\salidas_nam\1980\1980010106_NAM_day01.dat
D_1{1,2} = F:\salidas_nam\1981\1981010106_NAM_day01.dat
D_1{2,2} = F:\salidas_nam\1981\1981010106_NAM_day01.dat
...
但是,我认为您想要这个(不再重复):
D_1{1,1} = F:\salidas_nam\1980\1980010106_NAM_day01.dat
D_1{2,1} = F:\salidas_nam\1981\1981010106_NAM_day01.dat
D_1{1,2} = F:\salidas_nam\1980\1980010206_NAM_day01.dat
D_1{2,2} = F:\salidas_nam\1981\1981010206_NAM_day01.dat
...
如果是这种情况,则可以删除内部for
循环并执行以下操作:
for idia=1:lmes
nn = 1;
for iano = anoini:anofin
D_1{nn,idia} = load(sprintf('F:\\salidas_nam\\%d\\%d%0.2u%0.2u06_NAM_day01.dat',iano,iano,mesini,idia));
nn = nn+1;
end
end
这不能解决您在评论中提到的Adriaan可能遇到的leap年问题。