在LabView中减少数组“分辨率”

时间:2013-05-02 16:16:05

标签: arrays labview

真的很简单的问题,我只是无法绕过这种视觉编程。我有一个600的数组。我想通过获取数组的每60个索引的数字将其减少到10的大小。我知道如何用普通的编程语言来做这件事,但我无法弄清楚LabView。任何人都可以怜悯并帮助我吗?我到目前为止所处的位置,但很难过。

enter image description here

6 个答案:

答案 0 :(得分:9)

由于大小已知,因此执行此类操作会更有效:

enter image description here

您还可以将输出隧道配置为条件,这使代码更简单,但效率不高,因为它必须重复分配内存。当你有一个包含10个元素的数组时,这不是一个真正的考虑因素,但它可能是更大的数组:

enter image description here

如果你遇到类似的问题,你可能希望阅读一些教程,书籍甚至课程。

答案 1 :(得分:3)

另一种方法(没有循环):

enter image description here

我将数组重塑为2d数组(这不会分配新数组,只会改变维度),然后索引第一个coloumn以获得每60个元素。

答案 2 :(得分:2)

如果您需要固定大小的数组,那么您所拥有的将是一个很好的方法。如果您在FPGA上运行或需要减少RT目标上的抖动,这将非常重要。

你所拥有的并不是最简单的方法。任何更简单的方法都是使用移位寄存器来累积新数组:

enter image description here

如您所见 - 如果索引是60的倍数,则该元素将附加到数组中。否则,在false的情况下,数组将通过未修改的传递。

您应该知道,虽然这种方法更容易使用,但它偶尔会导致内存分配增加正在累积的数组的大小。通常这不是问题。

答案 3 :(得分:0)

你冷酷的另一种方法是使用decimate 1-d array原语。

将数组拆分为n固定长度数组,其中第一个数组包含0 n 2n 3n ...尽管n = 60可能有点大。

如果您需要多个长度相同但刚刚从不同位置开始的数组,这可能会更有用。

答案 4 :(得分:0)

根据你描述的内容,你可能想要做一些事情,比如取每个60值的平均值,而不是随意抓取每个60,这样你就不会出现很多抖动,如果碰巧抓住异常值。根据您的申请,这可能有意义也可能没有意义:

enter image description here

enter image description here

答案 5 :(得分:0)

还要考虑查看开源OpenG toolkit。它有一个名为“索引1D数组元素”的函数,用于索引数组,只需给它数组和所需数据的索引位置,它就会返回所需的简化数组。请注意,如果您开始处理非常大的数组,它的功能可能太慢和/或内存密集,但它也包含许多很棒的功能,而不仅仅是数组操作。