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/
以下是上述代码的片段:
