代码之家  ›  专栏  ›  技术社区  ›  h_h10a

将同一文件夹中的多个.txt文件转换为.mat

  •  1
  • h_h10a  · 技术社区  · 6 年前

    我有许多.txt文件,其中包含n行和7列,每列用空格分隔。我要将每个文件转换为.mat文件,并将其保存在同一文件夹中。

    我试过了,但没用:

    files = dir('*.txt');
    for file = files'
        data=importdata(file.name);
        save(file.name, 'data');
    end
    

    虽然这对单个文件有效,但我希望以编程方式进行,因为我拥有的.txt文件数量非常大:

    data=importdata('myfile.txt');
    save('myfile', 'data');
    

    谢谢你的帮助

    2 回复  |  直到 6 年前
        1
  •  2
  •   scotty3785    6 年前

    这应该管用

    files = dir('*.txt');
    for idx = 1:length(files)
       file_name = files(idx).name;
       fprintf("Processing File %s\n",file_name);
       data=importdata(file_name);
       [filepath,name,ext] = fileparts(fullfile(pwd,file_name));
       save([name '.mat'],'data');
    end
    

    dir创建了一个需要索引的结构,因此我们创建了一个从1开始的for循环,并一直运行,直到dir的所有元素都被处理完毕。 注意,在代码中,我还添加了一个部分来将文件名(例如file1.txt)拆分到文件名和扩展名中。因此,在创建mat文件时,我们只使用名称部分,而不使用扩展名。

        2
  •  2
  •   h_h10a    6 年前

    @Scotty3785的答案很有效,而且这对我也很有效,以防有人需要它:

    files = dir('*.txt');
    for i=1:length(files)
        data=importdata(files(i).name);
        save(erase(files(i).name,".txt"), 'data');
    end