【问题标题】:Batch import of data from .txt files - MATLAB从 .txt 文件批量导入数据 - MATLAB
【发布时间】:2015-04-25 12:25:52
【问题描述】:

我有多个 .txt 文件,每个文件都包含相同的格式。

我一直使用以下方法将这些单独读入 MATLAB:

fid1 = fopen('Test_1.txt','r'); 
data = textscan(fid1, '%f %*f %f %f %f %*[^\r\n]','HeaderLines',4);

并使用cell2mat 从那里提取值。

如何批量导入所有 .txt 文件并全部存储?

到目前为止,我使用以下方法检测到重要的相关文件:

files = dir('Test_*.txt');

但我不确定如何使用循环以上述方式批量导入每个 .txt 文件。

【问题讨论】:

  • 你事先知道每个文件的行数吗?顺便说一句,你得到了所有的“成分”。您只需要循环并将读取的变量存储在您想要的位置/方式,例如在单个矩阵中。
  • 您似乎已经问过同样的问题:stackoverflow.com/questions/29844005/…。请不要重复提问!
  • 现在才弄明白(见:编辑)。出于兴趣,有没有更有效的方法可以在不使用循环的情况下做到这一点?
  • 您可能应该将您的解决方案添加为答案并接受它,以便其他人可以更轻松地看到问题已解决,并删除 brodroll 提到的此问题的重复项
  • @AnnaSchumann 很高兴你想通了!您可以将其作为解决方案发布,而不是编辑问题。我不知道在没有 for 循环的情况下读取多个文件(带标题)的更好方法

标签: matlab


【解决方案1】:
clear
data = {};
files = dir('Test_*.txt');
for i=1:length(files)
    fn = files(i).name;
    fid1 = fopen(fn,'r');
    data{1,i} = textscan(fid1, '%*f %*f %f %f %f %*[^\r\n]','HeaderLines',4);
end

【讨论】:

    猜你喜欢
    • 2015-03-17
    • 2018-12-23
    • 2018-04-12
    • 1970-01-01
    • 2016-11-18
    • 2017-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多