在struct数组中搜索值

时间:2014-05-09 08:54:16

标签: arrays matlab search for-loop struct

我有一个包含以下字段的大型struct数组:

x
y
z_value
level

我需要根据z_value == 10 && level = 5等条件执行搜索。

目前我的代码从第一个元素循环到最后一个元素检查所有结构值。 由于数组较大,因此需要~80secs才能完成。

是否有other alternative(other than by using binary search,heap etc)通过利用matlab的构建功能来快速

1 个答案:

答案 0 :(得分:1)

假设结构只有双数据,这段代码将获得满足上述条件的所有索引 -

names = fieldnames(s1) %%//s1 is your input struct

%%// matdata = cell2mat(squeeze(struct2cell(s1)))' %%//' Approach -1
matdata = reshape(struct2array(s1),numel(names),[])' %%//' Approach -2
data1 = matdata(:,[find(strcmp(names,'z_value')) find(strcmp(names,'level'))])
index = find(ismember(data1,[10 5],'rows')) %%// indices where condition is met