在 Matlab 中使用 find() 比较不同的数据类型

伊莎贝尔·谭

我正在使用不同的参数集在 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 循环来实现?或者,是否有更合适的数据结构可以用于此类数据?

提前致谢!

用户2999345

您可以将特定的 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章