我有一个问题,涉及尝试使用逻辑索引来加速某些处理。解决方案可能与此问题有些相关:
Convert subarray index to array index in MATLAB?
我正在尝试使用逻辑索引而不是使用find,因为它经常声称速度较慢。问题是这样的:
我有四种不同的查找功能,其结果索引被削减。
cix1 = find(crossings_flow < max(flow(k+(0:1))));
cix2 = cix1(find(crossings_flow(cix1) > min(flow(k+(0:1)))));
cix3 = cix2(find(crossings_flow(cix2)-max([flow(ix(cix2)); flow(ix(cix2)+1)]) < 0));
cix4 = cix3(find(crossings_flow(cix3)-min([flow(ix(cix3)); flow(ix(cix3)+1)]) > 0));
cix1
的索引被输入cix2
。然后依次为cix3
和cix4
。最终结果是我需要cix4
的索引,这些索引与称为crossings_flow的向量有关。
用逻辑索引替换cix1很容易:
crossings_flow < max(flow(k+(0:1)))
然后,当我想得到cix2时,如果我做了
cix2 = cix1(crossings_flow(cix1) < max(flow(k+(0:1))) )
然后我得到一个尺寸较小的逻辑数组,因为它只涉及crossings_flow的子数组。
我的问题是,有没有办法逻辑索引这种类型的嵌套查找问题,或者使用find找到最快的方法来执行此操作?这是一段运行多次的代码,因此我正在寻找可以帮助我加快速度的任何事情。所以也许逻辑索引可能会这样做。引用的问题显示了一种方法,但它没有涉及像这个问题的嵌套发现。