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

时间:2019-01-24 10:03:26

标签: matlab loops

我有很多.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 个答案:

答案 0 :(得分:2)

这应该有效

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创建了一个结构,您需要对其进行索引,因此我们创建了for循环,从1开始,一直进行下去,直到dir的所有元素都已处理完毕。 请注意,在代码中,我还添加了一个部分,用于将文件名(例如file1.txt)拆分为文件名和扩展名。因此,在创建Mat文件时,我们仅使用名称部分而不使用扩展名。

答案 1 :(得分:2)

@ scotty3785的答案很好用,如果有人需要它也对我有用:

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