设A是一个任意维数的数组(在我的例子中是2或3)。我如何在事先不知道维数的情况下展平(重塑到1D)这个数组?
如果我知道维数,我可以很容易地获得元素的总数(通过使用"Array Size“函数的组合),然后使用这个数字将A重塑为1D。不幸的是,"Array Size“函数本身返回一个元素数等于维数的数组,这将我们带回到最初的问题。
我已经通过创建一个函数(VI)来“解决”这个问题,该函数返回3D数组(我期望处理的最常见的数组类型)的元素总数,这样我就可以将其作为参数提供给重塑函数。问题:它不接受二维数组,即使算法可以处理这样的数组!(在Labview中,数组控件似乎对它们接受的维数有严格的要求,例如在Matlab中就不是这样)。
一个很好的解决方案是将"Array Size“给出的数组中的所有元素相乘,以快速获得元素的总数,而不必将其包装在sub VI中。它应该是非常标准的..
发布于 2012-01-13 20:57:37
我相信这就是你要找的:
http://zone.ni.com/reference/en-XX/help/371361E-01/glang/reshape_array/
你会这样做:
N-维度输入数组--> ArraySize --> 1D_SizesOUT
这将返回一个包含所有数组维度大小的一维数组。
然后你去:
1D_SizeOUT --> MultiplyArrayElements --> NumberOfElementsIn_n-DimInputArray
该值作为ReshapeArray - done的尺寸大小。
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/
下面是上述代码的一个片段:

发布于 2012-01-13 20:59:17
只要得到数组大小的数组大小,就可以得到维数...
要将其放入subvi,请将您的未知数组转换为一个变量,并给出此变量和subvi的维数。在subvi中,使用您的维数组"Variant to Data“。
https://stackoverflow.com/questions/8849567
复制相似问题