NI LabVIEW,CVI,数据采集等产品讨论区

取消
显示结果 
搜索替代 
您的意思是: 

信号峰值提取、拟和和平均

我利用LabVIEW 8.5对数据采集卡采集的信号进行处理,对采集到的信号进行峰值提取后再拟和,现在已经能够实现拟和结果的实时显示,但还有三个问题想请教大家。
1、由于采集到的信号稍微有点不稳定,需要进行100次采集(我采用一个while循环对数据进行持续采集),对每次采集到的信号分别进行峰值提取并拟和,得到100个双精度值,再对这100个值进行平均,在不中断数据采集的前提下,然后利用诸如reset功能再对下一组100次采集到的信号进行同样的处理,得到平均值,依次类推,得到多个平均值,请问这个怎么实现?
2、另一个办法是将多组100次的拟和结果自动保存到excel里面,再进行手动平均,利用诸如reset功能来保存数据,也就是说在不停止数据采集的前提下,将第一组100次拟和的结果保存到一个excel里面或者一个excel里的第一个列里面,再重置,使下一组100次拟和的结果保存到另一个文件名的excel或同一个excel里面的第二列里面,依次类推,请问这个又怎么实现?
3、在峰值提取时采用波峰检测.vi(peak detector.VI)控件,该控件有一个阈值输入端来设定需要提取的阈值,但是由于信号稍微有点不稳定,使得每次提取的峰值个数稍有差别,导致每次拟和结果差别较大,请问如何实现让其每次都提取相同数目的峰值(当然总的峰值个数大于所需要提取的个数)?
0 项奖励
1 条消息(共 8 条)
7,920 次查看
 
0 项奖励
2 条消息(共 8 条)
7,901 次查看
您好,1 您的第一种方法推荐使用LabVIEW的生产者/消费者结构,可以在“新建”中找到,它可以保证在生产者循环不停采数据,在消费者循环处理,互相不影响。2 您第二种方法也很容易实现,excel和labVIEW可利用LabVIEW中加入ActiveX的方法实现,不过您的应用不需要,您只要用文件选板中的读取、写入电子表格就可以了。3 您需要自己考虑一个算法,您使用的这个控件不能判断出高电平是否由于信号不稳定引起。 NI应用工程师
0 项奖励
3 条消息(共 8 条)
7,900 次查看

 非常感谢Vinzent的回复

现在补充说明一下我的要求:利用泰克示波器TDS220采集峰值成指数衰减的脉冲信号(参见附图Waveform),通过串口(串口速度慢,但利用GPIB并口向示波器“讲话”时,会使示波器采集的信号发生一跳一跳的现象)将信号导入到计算机,借助LabVIEW对该脉冲信号的峰值进行提取并对x轴缩放后进行非线性拟合。由于信号本身有些不稳定且示波器的垂直分辨率只有8位,需要对拟合结果(参看附件Peak detect and fitting.VI)中的b1(不关心a1c1)进行100次平均,并且把这100次的b1值保存到excel里的第一列里面;当改变外部信号,下一组100次拟合的b1值保存到excel里的第二列里面,依此类推。

 

因为我是一个LabVIEW的新手,还不太明白生产者/消费者循环,请各位高手帮忙指点。我也正在学习中。

请问如何在LabVIEW中加入ActiveX,它能实现我的要求嘛?另外Write to Spreadsheet File.vi是将二维和三维的数组存到excel里面,而我现在要求是每次将多个一维值b1保存到excel里,这如何实现?

3 Peak Detector.vi只能提取大于设定阈值的峰值,而不能提取设定个数的阈值,这个我还是不会编写自己的程序。

4 另外一种处理方式是将100次采集到的波形信号进行平均,再对平均的信号进行峰值提取和拟合,请问波形信号如何累加和平均呢?

源程序已经附在后面,敬请NI工程师及各位高手帮我修改修改。先行谢过!
0 项奖励
4 条消息(共 8 条)
7,878 次查看
1 生产者/消费者循环是通过队列实现的,在生产者循环负责采集数据,并且将采集到的数据写入队列,消费者循环负责将数据从队列读出并进行处理,在附件中粘贴了程序结构,上面有相应的说明。
2 ActiveX在前面板选择ActiveX容器,之后选择相应的内容就可以了,他和读写电子表格一样,只是excel与LabVIEW交互的一种方法,具体怎样处理数据还是需要自己编写。对于您的应用只需读写电子表格控件就可以了。您要通过每次对数组的操作后对电子表格写入或读出,数组选板中的“转置”,“创建数组”(用来追加)可能要用到。
3 对于您对100个波形信号的操作,如果您把它写进了数组或excel,用数组的加和,取平均就可以了,或者如果您想对数据进行固定个数峰值的提取,您可以取平均,并设定高于平均值多少的信号定义为峰值等。总之都是将元素写入数组并对其进行操作。还有,您是每100个一组进行的,如果您是每个元素都不断地与最近100个元素取平均,可以考虑使用移位寄存器。
5 条消息(共 8 条)
7,859 次查看

非常感谢您Vinzent对我的详细解答

 

我这两天将按照你所说的的自己整一整

 

实在搞不定的话再来请你帮忙

 

再次感谢

0 项奖励
6 条消息(共 8 条)
7,854 次查看

晕,我说这个帖子怎么似曾相识,原来我昨天在英文版里回复了的。这里又多了个英文版的克隆。你看看我在英文版里的VI能不能行。里面最关键的是一个在线平均的VI,这个VI不用存储前100次(平均次数)的数据,否则效率会很低。下面是英文版帖子的链接:

 http://forums.ni.com/ni/board/message?board.id=170&thread.id=369885

 

另外你的zip文件我打不开。

7 条消息(共 8 条)
7,819 次查看

ni好,我最近用了在用串口采集数据,使用了定时采集结构,请问这个该如何计算平均值和方差呢?

0 项奖励
8 条消息(共 8 条)
5,256 次查看