答案 0 :(得分:2)
也许你习惯了一种不同的语言,一切都是通过参考来完成的,但你不需要在LabVIEW中做任何这些。 LabVIEW 自动拷贝必要时在电线上的数据,但不是在必要时。
你的代码唯一要做的就是创建一个带有额外维度的数组,因为在你的循环中你将每个标量值构建成一个带有一个元素的一维数组,然后将该数组传递给索引数组终端,它构建了一个连接到它的数据数组 - 因为你传入的是1D数组,你会得到一个2D数组。然而,如果这是你真正想要的结果,你可以通过将原始数组连接到Build Array
函数然后将其从1 x n 重新整形为 n <来获得完全相同的结果/ em> x 1使用Reshape Array
:
如果您担心内存分配,除非您的代码实际耗尽内存或运行速度太慢,否则您不应该使用,您可以看到LabVIEW将赢得的内容通过选择Tools > Profile > Show Buffer Allocations
制作副本。这会为您选择的某种数据类型的任何终端添加一个小黑点,其中必须分配新的内存缓冲区。如果你为上面的代码执行此操作,你会发现从低维数据构建数组需要一个新的缓冲区,但重塑数组不会。
如果您有一个非常特殊的情况需要强制LabVIEW不分配缓冲区,您可以使用In Place Element Structure
。但是对于绝大多数编程而言,您无需考虑任何这些:只需让LabVIEW为您处理它。
与此同时,我建议你阅读tutorial on loops。