LabVIEW: 我可以聚类指标然后也显示均值吗?

LabVIEW: Can I cluster indicators then also display a mean?

LabVIEW 允许我创建一个簇对象,然后在其中放置 numeric indicators。然后,这个指标集合由一个 'wire' 作为一个集群提供。

如果我想添加另一个显示前一组值的平均值的指标(例如,我有 5 个温度值,我想显示每个值及其平均值),那么我可以添加一个新指标,但这需要一个新值。

将集群保存为 control 可以让我轻松地重用它,但是如果我每次都必须将平均值传递到集群中,那么我就会陷入这样的困境:

我可以在 control/should 中以某种方式计算平均值吗?我将其打包不同,以避免此处出现中间部分?

我会以不同的方式排列我的集群,例如如下图所示:

这样可以避免混淆数据和计算值,并且可以更轻松地更改温度数量(例如,如果您决定使用 6 个而不是 5 个)。

关于问题的编码方式,有多种选择。 "In Place Element" @Khachik 建议的,在我看来,是最干净和最简单的。

但是我更喜欢 LVOOP 并定义一个 class.

而不是 Xcontrols

您的 VI 程序框图如下所示:

这可能是 "Write temp" 方法:

最后,动态生成完全填充的集群的方法:

使用 LVOOP 对你的情况来说似乎有点过分了,但一旦你的程序变得更大,它就会证明自己的价值。

这就是子 VI 的用途。如果您认为代码使您的图表看起来不整洁,select 相关部分并选择 Edit > Create SubVI

我同意 MisterEmme 的建议,即您应该考虑定义您的集群,以便将平均值与各个温度值分开,这样如果您以后有六个温度或四个温度等,事情就不会中断。如果您将该集群转换为 typedef 并保存,然后您可以按照 Khachik 的建议使用 Bundle/Unbundle by Name,这为您提供了进一步的未来证明,因为您可以稍后在集群定义中添加或更改内容而不会破坏现有的代码。

我认为 In Place Element 在这里不合适,这是为了优化速度或内存密集型代码的性能,虽然它有时看起来比普通数组操作更整洁,但如果使用它实际上会损害性能过分和不恰当的。对于您所描述的需求,XControl 或 LVOOP 可能有点矫枉过正,但如果您想学习新知识,请务必查看它们。

我同意前面提到的 xControl 选项可能有点矫枉过正,但绝对是一个选项。您还可以轻松地添加更多的统计分析,并且所有代码都将很好地封装在控件中。平均值的计算将在 xControl 内部进行,控件的 DataType 将是温度的 TypeDef 簇。这是NI教程。不过,xControl 不适合胆小的人。

http://www.ni.com/tutorial/3198/en/