【问题标题】:How to read numbered sequence of .dat files into MATLAB如何将 .dat 文件的编号序列读入 MATLAB
【发布时间】:2013-03-17 18:48:24
【问题描述】:

我正在尝试将命名为 a01.dat、a02.dat...a51.dat 的编号的“.dat”序列加载到 MATLAB 中。我在下面的代码中使用了 eval() 函数。

%% To load each ".dat" file for the 51 attributes to an array.

a = dir('*.dat');

for i = 1:length(a)
eval(['load ' a(i).name ' -ascii']);
end

attributes = length(a);

我遇到了问题,因为我无法轻松地操作使用 eval 函数加载的数据。我发现社区强烈反对使用 eval。我在下面的代码中使用了 csvread()。

% Scan folder for number of ".dat" files
datfiles = dir('*.dat'); 

% Count Number of ".dat" files
numfiles = length(datfiles); 

% Read files in to MATLAB
for i = 1:1:numfiles
    A{i} = csvread(datfiles(i).name);
end

csvread() 对我有用,但它读取文件但在读取文件时会弄乱顺序。它首先读取 a01.dat,然后读取 a10.dat 和 a11.dat 等等,而不是 a01.dat、a02.dat... 每个文件的内容都是带符号的数字。有些是逗号分隔的单列,这是一个偶数拆分。所以 a01.dat 的内容是逗号分隔的,a02.dat 的内容在一个列中。

请问我该如何处理?

【问题讨论】:

    标签: matlab


    【解决方案1】:

    您的问题似乎是文件排序。借鉴question on mathworks,这应该对您有所帮助:

    datfiles = dir('*.mat');
    name = {datfiles.name};
    [~, index] = sort(name);
    name = name(index);
    

    然后你就可以循环使用name:

    % Read files in to MATLAB
    for i = 1:1:numfiles
        A{i} = csvread(name{i});
    end
    

    【讨论】:

      猜你喜欢
      • 2015-09-26
      • 1970-01-01
      • 2015-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      相关资源
      最近更新 更多