这不是一个关于如何做某事的问题,而是为了满足我的好奇心。
根据this,Labview将数组作为一系列int32存储在内存中,这些int32描述了每个维度的大小,后跟实际数据。因此,例如,大小为3x5的2-d阵列将存储为
0: 3
4: 5
8: data starts here
现在假设你有一个int32数组。 labview如何判断实际数据和数组大小信息之间的区别?例如,在上面的示例中,labview如何知道它是3x5数组而不是长度为3的1-d数组,然后忽略其余的元素?对不起,如果有一些我不知道的东西显而易见。
答案 0 :(得分:3)
如果查看LabVIEW知识库文章How LabVIEW stores data in memory,您会看到每个数据类型都存储有类型信息。对于数组,它首先为每个维度存储一个I32,然后是flattenend数据。 实际的数据类型存储在它的type-descriptor中,它由不同包含的类型描述符列表组成。对于数组,最小值为2:
数组的类型描述符是
<nn> xx40 <k> <k dims> <k elems> <element type descriptor>
其中nn是总数据包大小
xx40是数组数据类型
k是维度的总数
对于包含的I32,类型描述符是:
0004 xx03 xx
0004是类型描述符的长度 03是I32类型标识符
然而,它已经在LabVIEW 7和8之间进行了更改。依靠类型描述符是你不应该自己搞砸的东西。让LabVIEW处理这个问题。
答案 1 :(得分:2)
当在LabVIEW内部传递对数据的引用时,数据类型也总是传递。数据作为void指针传递,类型与它们一起传递。因此,只要LabVIEW看到您的阵列,它也会看到该类型是int32s的二维数组。 (我在National Instruments的LabVIEW团队工作)