【问题标题】:Storing and replacing values in array continuously连续存储和替换数组中的值
【发布时间】:2019-11-07 03:13:57
【问题描述】:

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

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

但是我的问题是,每当我使用替换数组子集将新值插入索引 n 时,所有其他索引点都会被删除。渲染它几乎没用。我在想它的 Initialize 数组会导致问题,但我似乎无法在这里做什么。

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

我很确定我已经完成了大部分其余的代码,除了这里和那里未完成的部分。这只是我的问题,阵列也无法按照我的意愿工作。

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

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

download link for the VI

【问题讨论】:

    标签: arrays labview


    【解决方案1】:

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

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

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

    编辑:

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

    【讨论】:

      猜你喜欢
      • 2022-12-17
      • 1970-01-01
      • 1970-01-01
      • 2022-01-07
      • 2017-03-15
      • 2013-09-11
      • 1970-01-01
      • 1970-01-01
      • 2021-12-01
      相关资源
      最近更新 更多