Matlab:迭代大量存储数据

时间:2015-08-21 03:39:15

标签: matlab

我正在考虑将多个变量存储到一个数组或单元矩阵中。 我目前拥有的数据是     seaLevel< 339x1 double>     tideLevel< 201x1 double>     高度< 55x1 double>

我想在一个班级中拥有所有这些,所以我可以遍历每个小组。

因此varGroup将包含上述所有三个变量及其名称

希望有人可以提供帮助

2 个答案:

答案 0 :(得分:0)

只需在matlab中定义结构,例如

z = struct('seaLevel',zeros(1,339), 'tideLevel',零(1,201), 'height',零(1,55));

您也可以创建一个结构数组 data(n)= z;

答案 1 :(得分:0)

要展开the other answer和您的评论,您可以使用struct,并且仍然可以使用fieldnamesdynamic field references在循环中访问所有这些内容。根据您对变量的处理方式,structfun也可能是一个选项。

例如:

% Dummy data!
seaLevel = rand(339, 1);
tideLevel = rand(201, 1);
height = rand(55, 1);

% Generate our data structure
mydata_struct = struct( ...
    'seaLevel', seaLevel, ...
    'tideLevel', tideLevel, ...
    'height', height ...
    );

datafields = fieldnames(mydata_struct);
nvariables = length(datafields);

for ii = 1:nvariables
    fprintf('Looping over ''%s'' data, %u data entries\n', datafields{ii}, length(mydata_struct.(datafields{ii})))
end

将以下内容打印到控制台:

Looping over 'seaLevel' data, 339 data entries
Looping over 'tideLevel' data, 201 data entries
Looping over 'height' data, 55 data entries

如您所见,您可以通过简单的循环遍历所有数据。

或者,您可以使用单元格数组:

% Dummy data!
seaLevel = rand(339, 1);
tideLevel = rand(201, 1);
height = rand(55, 1);

% Generate a cell array
mydata_cell = {seaLevel, tideLevel, height};
nvariables = length(mydata_cell);

for ii = 1:nvariables
    fprintf('Looping over data column %u, %u data entries\n', ii, length(mydata_cell{ii}))
end

将以下内容打印到控制台:

Looping over data column 1, 339 data entries
Looping over data column 2, 201 data entries
Looping over data column 3, 55 data entries

单元格数组稍微简单一些,但是您无法像上面的struct数组一样通过名称引用数据。这两种方法都允许您在同一个数组中存储和访问不同的数据。