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

Matlab 将多个.txt文件转换为同一文件夹中的.mat,matlab,loops,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

我有许多.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');
谢谢你的帮助

这应该行得通

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文件时,我们只使用名称部分,而不使用扩展名。

这应该可以

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文件时,我们只使用名称部分,而不使用扩展名。

@scotty3785的答案很好,而且在有人需要时,这也适用于我:

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

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

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

dir返回struct。您需要先提取文件数,然后启动计数器。然后提取每个文件的内容。dir返回struct。您需要先提取文件数,然后启动计数器。然后提取每个文件的内容。