我正在使用不同的参数集在 Matlab 中运行实验,并希望存储一些标量结果,例如均值、方差等。然而,这些参数并不都具有相同的类型,即使在一种类型的参数中,并非所有条目都相同方面。例如,我有一个参数cellSize
,它可以是标量 ie4
或多个值的向量 ie [4, 6, 10]
。
我发现我可以使用这样的结构数组来存储结果s
(只有一个参数的简化版本):
s = struct('cellSize', []);
s(1).cellSize = 4;
s(2).cellSize = [4, 6, 10];
但我的问题是,现在我无法搜索匹配特定参数集的行,例如,find(s.cellSize = [4, 6, 10])
因为矩阵维度不一致。
我想以这种方式搜索数据,以便我可以检查结果数据中是否已经存在使用当前参数集的实验。
有没有办法用结构数组来做到这一点,还是最好自己用 for 循环来实现?或者,是否有更合适的数据结构可以用于此类数据?
提前致谢!
您可以将特定的 strut 字段转换为单元格并用于cellfun
搜索此单元格数组中的匹配参数:
% generate struct
s = struct('cellSize', []);
s(1).cellSize = 4;
s(2).cellSize = [4, 6, 10];
s(3).cellSize = [5, 5];
% query parameters
q = [4, 6, 10];
% convert field to cell array
c = {s.cellSize};
% find index
idx = find( cellfun(@(x) isequal(x,q),c) ) % idx = 2
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句