繁体   English   中英

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

[英]How to flatten (reshape to 1D) an array of arbitrary dimension in Labview

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

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

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

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

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

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/

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

只需获取数组大小的数组大小,您就可以获得维数...

要将其放入子目录中,请将未知数组转换为变量,并将此变量和维数提供给子目录。 在subvi中,“Variant to Data”包含您的维度数组。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM