如何在MATLAB中矢量化监视数组中每个元素的代码?

时间:2015-01-16 21:53:03

标签: performance matlab vectorization nested-loops

假设我有一个1x2823矢量,如:

a = [100 223 445 0 99 0 0 123 45 0 67 89 0 55 0 ........ 0 212];

请注意,矢量只是一个例子 我想要为一个大于eps且小于DATA_NULL的元素执行一段代码(两个常量值) 我该如何对此进行矢量化? 我知道我可以循环并单独监视a的每个元素,然后在if语句中编写代码。
但是这个循环将在一个更大的循环中,我不想使用嵌套循环。

1 个答案:

答案 0 :(得分:2)

这取决于你想做什么,但是让我们说你想重新分配这些价值观:

a((a>eps)&(a<DATA_NULL))=NewValue;

您也可以将此子集作为参数传递给函数(假设它接受向量作为参数)。让我们假设您想要符合您标准的所有元素的绝对值:

AbsOfConditionala=abs(a((a>eps)&(a<DATA_NULL)));