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

时间:2016-08-01 15:54:25

标签: arrays labview

我知道问题很混乱所以我会试着解释我的问题。我在labview项目中工作,我要做的事情之一是,在询问用户变量的数量和每个变量的数量之后,创建一个包含所有de组合的数组。

让我们知道我们有3个不同的变量,例如: var1,var2,var3

以及每个值的不同值的数量为:

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 个答案:

答案 0 :(得分:1)

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

因此最小的for循环将迭代var3,

medium for循环将迭代var2和

大的for循环将迭代var1。

答案 1 :(得分:1)

您正在寻找的是"笛卡尔产品"。

您可以使用Lists.vi的gmath / Discrete Math.llb / Cartesian产品来完成此任务:

labview code

这给出了预期的结果:

result

它的工作方式是为Cartesian Product VI提供1D数组,详细说明您想要获得笛卡尔积的几个数组的大小,并生成索引相应数组以创建笛卡尔积所需的相应索引。

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

以下是这样的:

cluster auto

我将所有这些保存到一个应该与LV8.6完全兼容的项目中,found here

答案 2 :(得分:0)

如果您可以指定要实现的语言,那么共享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])