通读并保存具有不同文件名的文件

Posted

技术标签:

【中文标题】通读并保存具有不同文件名的文件【英文标题】:Read through and save files with different filenames 【发布时间】:2014-06-04 14:53:38 【问题描述】:

我有一个 CSV 文件列表。这些文件的文件名以 [year '_MDA8_mat.dat'] 的形式存储。我想将这些文件中的每一个读入 MATLAB 并保存输出。如何编写代码,以便轮流考虑每一年,并为每一年保存输出 .mat 文件?

这是我在其中一个文件中阅读的内容:

flist = fopen('2006_MDA8_mat.dat'); % Open the list of file names - CSV files of states with data under consideration

nt = 0; % Counter will go up one for each file loaded
while ~feof(flist) % While end of file has not been reached
    for i = 1:27299 % Number of files 

        fname = fgetl(flist); % Reads next line of list, which is the name of the next data file
        disp(fname); % Stores name as string in fname

        nt = nt+1; % Time index

        load (fname, 'site_data'); % Load current file. It is all the data for one site for one year
        O3_datai = site_data;
        % Do some more stuff
end
save ('2006_MDA8_1990_2014.mat', '-v7.3')

我试着写一个像这样的for 循环:

year = 2006:2014
for y = 1:9
    flist = fopen([year(y) '_MDA8_mat.dat']);
    nt = 0; % Counter will go up one for each file loaded
    while ~feof(flist) % While end of file has not been reached
        for i = 1:1500 % Number of files 
           % Same as above   
        end
    end
    save ([year '_MDA8_1990_2014.mat'], '-v7.3')
end

但是,当我运行它时,它的作用与对一个文件脚本的作用不同。我不太确定错误发生在哪里,但 MATLAB 告诉我 feof 有错误,这似乎没有意义。

【问题讨论】:

年份是数字而不是字符。保存 ([num2str(year) '_MDA8_1990_2014.mat'], '-v7.3') 【参考方案1】:

数字和字符串组合时,需要在数字上做num2str

[num2str(year) '_MDA8_1990_2014.mat']

【讨论】:

以上是关于通读并保存具有不同文件名的文件的主要内容,如果未能解决你的问题,请参考以下文章

在具有不同变量名称的循环中保存

使用 Swift 保存具有不同名称的文件

保存多个文件而不替换存在的文件

如何在循环中的每次迭代中保存具有不同名称的文件? MATLAB

将位图保存到文件中并返回具有位图图像的文件

根据文件选择保存和加载用户选择 - R Shiny