arrays - 如何在 Labview 中展平( reshape 为 1D)任意维度的数组

标签 arrays labview flatten

让 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/

这是上面代码的片段:
enter image description here

关于arrays - 如何在 Labview 中展平( reshape 为 1D)任意维度的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8849567/

相关文章:

c# - VB6 数组语法中的双括号(从 .Net com-interop 传递)

ios - 将 Realm 对象数组存储在另一个 Realm 对象中(Swift)

python - 将不良文本转换为韩语

php - 如何合并多个未知长度的平面数组,转置它们,然后形成一维数组?

javascript - 检查数组中的值并返回另一个值

mysql - 使用 OCI、MySQL 和 LabView 构建 DLL 一直失败

mercurial - 符合 MSSCCI 标准的 Mercurial 客户端

scala - 调用 flatten 无法在一个用例上编译,但在另一个用例上有效

javascript - 为什么使用 .reduce 而不是 reduce()?在使用 JavaScript 扁平化数组中

c++ - 主发生器溢出? C++