如何将.dat文件的编号序列读入MATLAB

时间:2013-03-17 18:48:24

标签: matlab

我正在尝试将以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的内容在一列中。

请问我该如何处理?

1 个答案:

答案 0 :(得分: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
相关问题