如何在Labview中展平(重塑为1D)任意维数组

cal*_*ger 6 arrays labview flatten

设A是任意维数的数组(在我的例子中为2或3).如何在不事先知道尺寸数量的情况下展平(重塑为1D)此阵列?

如果我知道尺寸的数量,我可以很容易地获得元素的总数(通过使用"数组大小"功能的组合),然后使用此数字重新形成A到1D.不幸的是,"数组大小"函数本身返回一个数组元素数等于维数的数组,这使我们回到最初的问题.

我已经通过创建一个函数(VI)"解决"了这个问题,该函数返回了3D数组的元素总数(我期望处理的最常见的数组类型),因此我可以将它作为参数提供给重塑功能.问题:它不会接受2D数组,即使算法适用于这样的数组!(似乎在Labview中,数组控件对它们接受的维数是严格的,例如在Matlab中不是这种情况).

一个很好的解决方案是将"数组大小"给出的数组的所有元素相乘以快速获得元素总数的简单方法,而不必将其包装在子VI中.总的来说,是不是有一种简单有效的方法来解决这个问题?应该很标准..

J..*_*... 12

我相信这就是你要找的东西:

http://zone.ni.com/reference/en-XX/help/371361E-01/glang/reshape_array/

你会这样做:

n-DimInputArray - > ArraySize - > 1D_SizesOUT

这将返回包含所有数组维度大小的1D数组.

然后你去:

1D_SizeOUT - > MultiplyArrayElements - > NumberOfElementsIn_n-DimInputArray

此值作为ReshapeArray的尺寸大小 - 完成.

http://zone.ni.com/reference/en-XX/help/371361E-01/glang/array_size/

http://zone.ni.com/reference/en-XX/help/371361E-01/glang/multiply_array_elements/

以下是上述代码的片段:
在此输入图像描述