Arrays 在结构数组中搜索值

Arrays 在结构数组中搜索值,arrays,matlab,search,for-loop,struct,Arrays,Matlab,Search,For Loop,Struct,我有一个包含以下字段的大型结构数组: x y z_value level 我需要根据条件执行搜索,比如z_值==10&&level=5 当前,我的代码从第一个元素循环到最后一个元素,检查所有结构值。 由于阵列很大,需要~80秒才能完成 是否有任何其他替代方法(除了使用二进制搜索、堆等)通过利用matlab的内置功能来快速?假设结构只有两个数据,此代码将获得满足上述条件的所有索引- names = fieldnames(s1) %%//s1 is your input struct %%//

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

x
y
z_value
level
我需要根据条件执行搜索,比如
z_值==10&&level=5

当前,我的代码从第一个元素循环到最后一个元素,检查所有结构值。 由于阵列很大,需要
~80秒才能完成


是否有任何
其他替代方法(除了使用二进制搜索、堆等)
通过利用matlab的内置功能来快速

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

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

该结构的所有字段中的所有这些数据都是双精度数据,还是也可能有任何字符数据?该结构中没有字符数据忘记提到该结构包含整数和双精度数据。更准确地说,z_值是双精度的,其余的是整数。导致转换为matrixIt时出现问题的原因应该是好的!测试一下,我希望方法2会更快。“输入单元格数组的所有内容都必须是相同的数据类型”double,而整数属于相同的数据类型double。所以,它看起来好像里面还有其他东西,可能是char或complex,甚至可能是其他结构,甚至是单元格。请再调查一下。