0

我需要在 Matlab 中解析一个 .txt 文件,以便文件的所有行都是数组中的不同元素。数组的每个元素也将是一个整数数组。所以我需要从 .txt 文件中创建一个数组数组。

我遇到的问题是我无法弄清楚使用哪个函数来解析文件。如果我使用 importdata(filename),它只会解析文件的第一行。如果我使用 textscan,它会以列的形式解析文件,并且文件的格式如下:

1 1 1 1 1
13 13 13 13 13

2 2 2 2 2
14 14 14 14 14

我需要每一行都是一个数组,然后我可以用它来比较我的数据。

是否有任何一种功能可以满足我的目的?我试过查看 MATLAB 文档,但无法理解。

4

2 回答 2

0

如果每个数组需要不同的大小,则需要使用元胞数组来包含它们。像这样的东西:

fid = fopen('test.txt'); %opens the file
tline = fgets(fid); % reads in the first line
data = {}; % creates an empty cell array
index = 1; % initializes index
while ischar(tline) % loops while the line that has just been read contains characters, that is, the end of the file has not been reached.  
    data{index} = str2num(tline); % converts the line that has just been read in to a string and assigns it to the current column of data
    tline = fgets(fid); % reads in the next line 
    index = index + 1; % increments index
end

fclose(fid);
于 2013-03-18T17:43:40.480 回答
0

如果您知道您的数据将具有 5 个数字后跟一个数字的特定格式,您可以使用 dlmread 然后格式化生成的矩阵。

data = dlmread('data.txt',' ');
multipleValueRows = data(1:2:end,:);
singleValueRows = data(2:2:end,1);

数据矩阵的大小(文件的行数)x 5 列。在只有一个数字的行中,数据矩阵将在第 2-5 列中包含零。

于 2013-03-18T17:44:28.963 回答