siufai 发表于 2012-12-26 20:18

请教LabVIEW高手一个数据读取问题

本帖最后由 siufai 于 2012-12-26 23:05 编辑

用CAN Analyser读取的即时数据,samples rate是100, 然后用excel(csv)保存下来。这个数据我需要即时同步做计算引用,所以在labview里面加了一个数据读取的程序(中心思想是每次读取文件中的最后一个数值,用Array Size Function测出整个文件的数据数然后减一,得到Size。然后Index Array Function输出单独的element)。 如图。



问题是之前存好的excel数据,是以列(Spalte)存的,就一列(A1 to AX)。可是这个数据读取程序在Spreadsheet String to Array Function转换时却只转换了第一行(A1 to X1。。。),这样的话。检测结果,只有第一个数据被转换了,从之后从第二个数据开始就显示就是灰色的0了,以后一直是0。

我找遍了Array里面所有function尝试,包括interleave,rotate,reverse等等十几个,想把行读取换成列读取,都不管用。因为是1DArray,2D的transpose也不行了。所以来求救各位大侠们。如果没表述清楚,我也可以穿程序上来,不胜感激。{:5_336:}

gonk 发表于 2012-12-27 00:34

好久没用labview,手边也没有,提个建议吧,未必是最好的方法。rotate interleave这些不是你想要的,还是要用2d transpose。

你的读取trigger一次出来100个sample,可以用shift register把每个sample(1d array)用build array放到2d array相应的位置,然后把最后的2d array transpose,可能是你要的结果。下次trigger的结果append到csv spreadsheet应该就可以了。

gonk 发表于 2012-12-27 01:11

刚发现看反了,是你存成列不知道怎么读取。我说的是怎么把你读取的数据存成行而不是列。不过你把数据存成行不就没读取的问题了吗?

如果数据已经存了没办法,想从目前程序入手,我估计你的Spreadsheet String To Array里面array type是1d array可能是问题所在,如果你把input data type从1d换成2d array再用index array试试呢?

siufai 发表于 2012-12-27 01:54

gonk 发表于 2012-12-27 01:11 static/image/common/back.gif
刚发现看反了,是你存成列不知道怎么读取。我说的是怎么把你读取的数据存成行而不是列。不过你把数据存成行 ...

谢谢,看来嫩是大师级别的了。{:5_336:}我刚才把spreadsheet String to Array 改成 read from spreadsheet,然后设置成transpose,改成true,就可以读取了。我觉得labview但凡跟sheet打交道,自动就设置成先读行了吧。N维数组没问题,但是一到1D的时候就容易迷惑人了。非常感谢{:5_335:}

gonk 发表于 2012-12-27 19:34

siufai 发表于 2012-12-27 01:54 static/image/common/back.gif
谢谢,看来嫩是大师级别的了。我刚才把spreadsheet String to Array 改成 read from spreadshee ...

我觉得这不关labview什么事,不管labview还是别的程序对于array的定义一般来说是一样的,只不过array index有的程序第一个element是0(像labview)有的程序是从1开始算(像matlab)。

这次的问题是因为你存数据的时候存成列。如果存成行你的数据是1X100,你存成列就变成了100X1,labview如果还是按照1d array的格式读取数据,除了第一个element其他当然是0了,所以你把1列当成是1d array是问题所在。

voss 发表于 2013-5-22 21:34

sehr gut
页: [1]
查看完整版本: 请教LabVIEW高手一个数据读取问题