1

非常简单的问题,我就是无法绕过这个可视化编程。我有一个大小为 600 的数组。我想通过在数组的每 60 个索引中抓取一个数字来将其减小到 10。我知道如何用普通的编程语言做到这一点,但我无法弄清楚 LabView。谁能怜悯我,帮帮我?到目前为止,我已经附上了我所在的位置,但这很可悲。

在此处输入图像描述

4

6 回答 6

9

由于大小是已知的,因此执行以下操作会更有效:

在此处输入图像描述

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

在此处输入图像描述

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

于 2013-05-02T21:35:15.587 回答
3

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

在此处输入图像描述

我将数组重塑为二维数组(这不会分配新数组,只会更改尺寸),然后索引第一列以获得每 60 个元素。

于 2013-05-04T11:04:17.733 回答
2

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

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

在此处输入图像描述

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

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

于 2013-05-02T20:34:24.570 回答
0

执行此操作的另一种方法是使用抽取一维数组原语。

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

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

于 2013-05-03T01:48:46.963 回答
0

根据您的描述,您可能想要做一些事情,例如取每 60 个值的平均值,而不是仅仅任意抓取每 60 个值,这样如果您碰巧抓住一个异常值,您就不会表现出很多抖动。根据您的应用程序,这可能有意义,也可能没有意义:

在此处输入图像描述

在此处输入图像描述

于 2013-05-03T13:47:01.437 回答
0

还可以考虑查看开源OpenG 工具包。它有一个称为“索引一维数组元素”的函数,用于索引数组,您只需为其提供数组和所需数据的索引位置,它就会返回所需的缩减数组。请注意,如果您开始处理非常大的数组,它的函数可能会太慢和/或内存密集,但它也包含许多很棒的函数,而不仅仅是用于数组操作。

于 2013-05-03T14:45:33.230 回答