让 A 是一个任意维度的数组(在我的例子中是 2 或 3)。
如何在不事先知道维数的情况下展平( reshape 为 1D)这个数组?
如果我知道维数,我可以很容易地获得元素的总数(通过使用“数组大小”函数的组合),然后使用这个数字将 A reshape 为 1D。
不幸的是,“数组大小”函数本身返回了一个数组,其元素数等于维数,这让我们回到了最初的问题。
我通过创建一个函数 (VI) “解决”了这个问题,该函数返回 3D 数组(我期望处理的最常见的数组类型)的元素总数,因此我可以将其作为参数提供给 reshape 功能。问题:它不会接受二维数组,即使算法可以使用这样的数组! (似乎在 Labview 中,数组控件对它们接受的维数非常严格,例如在 Matlab 中并非如此)。
一个不错的解决方案是将“数组大小”给定的数组的所有元素相乘以快速获得元素总数,而无需将其包装在子 VI 中。
总的来说,没有简单有效的方法来解决这个问题吗?应该挺标准的。。
最佳答案
我相信这就是您要寻找的:
http://zone.ni.com/reference/en-XX/help/371361E-01/glang/reshape_array/
你会这样做:
n-DimInputArray --> ArraySize --> 1D_SizesOUT
这将返回一个包含所有数组维度大小的一维数组。
然后你去:
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/
这是上面代码的片段:
关于arrays - 如何在 Labview 中展平( reshape 为 1D)任意维度的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8849567/