【发布时间】:2014-06-02 07:07:51
【问题描述】:
我需要找到一个向量中小于其后的多个元素之一的元素。在循环中很容易做到:
x = some_vector_values;
for m = 1 : length(x)
if( any( x(m+1:end) > x(m) )
do_such_and_such;
end
end
但是速度快要死了。我正在挠头,试图想出一个有效的解决方法,但我一无所获。数组长度可以达到数千,我需要为许多不同的数组执行此操作。
【问题讨论】:
-
不能先对向量进行排序吗?那么你肯定知道特定数字后面的数字比那个小(大)。
-
一些示例输入和输出来展示您的要求?
-
尝试运行分析器,是什么导致了主要的 cpu 时间、循环/条件或“do_such_and_such”? x 是什么维度?
-
我同意@NKN。请注意,
sort也可以返回已排序元素的原始索引。 -
@Daniel 这是循环中的
if比较。
标签: arrays performance matlab optimization vectorization