我是LabVIEW的新手,但他一直在构建一个信号分析器代码,该代码可以获取所需的数据,并在数据获取后将其打印到文本文件中。我遇到的问题是,当它创建一个新文件时,它会保留上一次运行的数据并打印出那些不是我想要的数据。我已经附上了LabVIEW vi(ver.2009),对此的任何帮助将不胜感激。
另外,如果有人在每次迭代后知道更好的RMS数据处理方式,那么我会很高兴看到它。
答案 0 :(得分:4)
回答你的主要问题:构建字符串的代码部分(带有移位寄存器的循环)在每次重新运行vi时存储以前的数据。你需要的是用空字符串初始化移位寄存器:
还有几点说明/建议:
答案 1 :(得分:1)
由于您询问了有关您使用的RMS功能的建议,因此我对您的代码进行了更详细的介绍。而且我可能很讨厌,但它没有意义(逐点):
您要求最终用户进行多次运行,然后减去一次。为什么?我想这是因为在for循环之前读取数据。 (删除那个)。
这将为您的输出数据添加RMS avaraging,您可以使用移位寄存器来放弃所有自己的计算。
您只需移动数据,而无需实际更改数据。通过递增起始频率,您可以移动FFT。因此,以55 Hz检测到的信号为no,以56 Hz为单位绘制。对您的最终用户来说,这会产生误导。
您需要在代码中注意的一件事是您没有连续的采样。每次迭代都会启动和停止数据采集循环。您可以通过绘制捕获的波形的t0来验证这一点。你会注意到他们没有以恒定的间隔开始。 更好的方法是在第一次迭代中使用Express VI创建的任务:
然而,您应该将采集模式更改为“连续样本”:
不要忘记在上一次迭代中关闭任务:
答案 2 :(得分:0)
您应该使用在每次运行之前清空的数组,而不是移位寄存器。