我有一个包含以下字段的大型struct数组:
x
y
z_value
level
我需要根据z_value == 10 && level = 5
等条件执行搜索。
目前我的代码从第一个元素循环到最后一个元素检查所有结构值。
由于数组较大,因此需要~80secs
才能完成。
是否有other alternative(other than by using binary search,heap etc)
通过利用matlab的构建功能来快速 ?
答案 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