连续存储和替换数组中的值

Storing and replacing values in array continuously

我正在尝试从波形中读取振幅,并根据信号的振幅发出绿色、黄色或红色的光。我是 labVIEW 的新手,无法理解可以与我知道可以使用的任何其他编程语言一起使用的想法。我想要做的是获取信号的值,每次它更新时,我都会将振幅值存储到一个大数组的索引中。每个测量值都存储在数组的 n+1 索引中。

在一定数量的数据点之后,我想重新开始并替换数组中的值(为此我使用带有模数的公式节点)。通过保留有限数量的索引来检查最大值,我将振幅检查限制在特定时间段内。

但是我的问题是,每当我使用替换数组子集将新值插入索引 n 时,所有其他索引点都会被删除。让它变得毫无用处。我在想它的初始化数组导致了问题,但我似乎无法理解这里要做什么。

我尝试在前面板中只创建基本数组,但它们要么是控件数组,要么是指示器数组,似乎不能同时写入和读取,它要么是控件(读但不能写),要么是指示(写但不读)?也许在 LabVIEW 中以 eloquent 的方式做我想做的事情是不可能的。如果无法在 LabVIEW 中使用数组执行此操作,我将寻找其他方法来执行此操作。

我很确定我已经记下了其余大部分代码,除了一些未完成的部分。这只是我的问题,阵列也无法正常工作。

我希望数组在输入索引 n 时保留其先前输入的索引 n-1 的数据。并且只有在索引回到该特定点后才会被替换。

相反,每次输入新索引时都会初始化一个新数组。

download link for the VI

您想做什么:
将修改后的数组的内容传输到 WHILE 循环的下一次迭代中。

会发生什么:
在每次迭代中,数组的内容都是相同的。就是你在外面创建的初始数组的内容。

要解决此问题,请右键单击循环左边框上的橙色方块,并将其设为 "shift register"。符号发生变化,右边框上出现类似的符号。现在,将修改后的数组连接到右侧的符号。流出到右边那个符号的东西,在下一次迭代中从左边的符号进来。

编辑:

我已经稍微优化了你的代码。有一个模函数,一个 IF 子句可以处理范围。 ..3 表示 "values lower or equal 3"。下一个案例是 "Default",下一个“7..”。不幸的是,这只适用于整数。否则,人们会使用带有 < 比较器或类似的嵌套 IF 子句。