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