我正在考虑将多个变量存储到一个数组或单元矩阵中。 我目前拥有的数据是 seaLevel< 339x1 double> tideLevel< 201x1 double> 高度< 55x1 double>
我想在一个班级中拥有所有这些,所以我可以遍历每个小组。
因此varGroup将包含上述所有三个变量及其名称
希望有人可以提供帮助
答案 0 :(得分:0)
只需在matlab中定义结构,例如
z = struct('seaLevel',zeros(1,339), 'tideLevel',零(1,201), 'height',零(1,55));
您也可以创建一个结构数组 data(n)= z;
答案 1 :(得分:0)
要展开the other answer和您的评论,您可以使用struct
,并且仍然可以使用fieldnames
和dynamic 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
数组一样通过名称引用数据。这两种方法都允许您在同一个数组中存储和访问不同的数据。