LabVIEW编程技巧-----如何过滤数组中的元素
有关过滤掉数组中0的问题,这实际上是过滤数组指定元素的问题,LabVIEW的基本数组操作并没有提供相应的节点,处理这个问题是很有技巧的.
LabVIEW内存操作的时候,对于数据量非常大的数组,如果处理不当地话,会极大影响程序的性能.
OPENG中提供了非常好的处理节点,介绍如下:
我的例子中利用斜坡函数生成一个0--127的自然数组(我用的是DBL),目的是过滤掉值等于1,3,5的元素,运行结果可以看出,135的元素的确被过滤掉了,同时也返回被过滤掉的元素的索引号INDICES
我们跟踪一下它的实现方法
可以看出,它首先做的是在数组中搜索需要过滤的元素的索引号,并通过循环形成一个由索引号组成的数组.
继续跟踪一下它的搜索实现的方法
它不过是利用最基本的数组搜索函数,值得一提的是这个VI说明了如何连续搜索的方法,通过在循环中调用搜索VI,如果没有符合条件的元素,搜索返回-1,否则返回元素的索引号(偏移量),这相当于C中的指针操作,并以该次索引作为下一次搜索的开始位置,这样就实现了连续搜索.
在看看得到索引号数组后,如何过滤这些元素.
这个VI中可以看出它利用的是删除数组元素的方法,这里的关键是必须从后往前删除,否则如果从前向后删除,则索引号的位置会发生变化.因此,对索引数组做了降序处理.