如何填充和排列其行是组合和列的不同组?(labview)

How populate and array whose rows were combinations and columns the different groups?(labview)

我知道这个问题令人困惑,所以我会尝试解释我的问题。我在一个 labview 项目中工作,我必须做的一件事是,在询问用户变量的数量和每个变量的不同值的数量之后,创建一个包含所有 de 组合的数组。

假设我们有 3 个不同的变量,例如: 变量 1、变量 2、变量 3

并且每个值的不同值的数量是:

var1 -> 0, 1, 2
var2 -> 11, 22
var3 -> 55, 66, 77, 88

所以,结果数组应该是这样的:

0 11 55
0 11 66
0 11 77
0 22 55
0 22 66
...

这样直到 3 x 2 x 4 = 24 行

考虑到变量的数量和每个变量的值通常会不同,我该如何填充这个数组?

我需要如何使用 labview 来完成。 非常感谢。

最简单和示例的方法是在彼此内部使用 3 个 for 循环。

所以最小的for循环会迭代var3,

中等 for 循环将迭代 var2 和

large for 循环将迭代 var1。

共享 python 实现,如果您可以指定实现所用的语言,将会有所帮助。

def array_3d(var1,var2,var3):
  a = []
  for i in range(len(var1)):
    for j in range(len(var2)):
      for k in range(len(var3)):
        a.append([var1[i],var2[j],var3[k]])
  print a


array_3d([1,2,3],[10,20,30],[300,400,500,600])

您要找的词是"Cartesian Product"。

您可以使用 gmath/Discrete 数学。llb/Cartesian Lists.vi 的乘积来完成此操作:

这给出了预期的结果:

它的工作方式是向 Cartesian Product VI 提供一个一维数组,其中详细说明了要获取其笛卡尔积的多个数组的大小,它会生成相应的索引,您需要为各个数组建立索引以创建笛卡尔积。

您需要做的就是构建一个二维数组(一维行向量数组),其中包含您想要计算其笛卡尔积的所有信息,以及一个显示每个单独行向量大小的一维数组.在 LabVIEW 中,当您构建一维数组时,列数变为 max(len(row_vector_i)),因此要保留此长度信息以进行自动叉积,最好的方法是简单地构建一维数组集群,其中每个集群都有一个单独的一维数组或行向量。这会保留大小信息。

这是它的样子:

我把这些都存进了一个工程,应该是完全兼容LV8.6的,found here