仪器测量的水好深……

最近要搞一个实时测量随时间变化的LAOS信号的测量程序。一开始想得很简单,但是越搞发现越复杂。首先,因为要做FFT,你必须保证coherent sampling。但是实时测量一个未知谐波信号,你根本不可能事先知道信号的基频。而各种windowing效果都不理想,还是会有很大的一个skirt存在。上网搜了半天,发现在IEEE上有些文章讨论如何不用coherent sampling、不用windowing、而且还很快地获得几乎没有spectral leakage的频谱。大致思想跟我想的是一样的(这也不算是什么英雄之所见了),即:通过别的方法找出基频,然后重构一个coherent的信号来做FFT。问题在于如何准确地找出基频或者如何重构信号,以及如何更快。这里面涉及到了很多基本数值方法的灵活运用,我这种半路出家的人,像FFT等基本概念是有的,但是数值世界的各种奇技淫巧当然是望尘莫及了。所以觉得一个人再牛也懂不完所有的东西这一点真的让人活在这世界上没什么乐趣。

先把一些有用的两篇相关文章记下来,慢慢研究:

  • Zhongjun, Y.; Degang, C.; Geiger, R. In A computationally efficient method for accurate spectral testing without requiring coherent sampling, Test Conference, 2004. Proceedings. ITC 2004. International, 26-28 Oct. 2004; 2004; pp 1398-1407.
  • Minshun, W.; Degang, C.; Guican, C. In A faster and accurate method for spectral testing applicable to noncoherent data, Aerospace and Electronics Conference (NAECON), Proceedings of the IEEE 2010 National, 14-16 July 2010; 2010; pp 70-75.

希望以上方法能把non-coherent sampling的问题解决了。第二步就是要程序能够自动判断当前可分辨的高次谐波个数。令人郁闷的是我上水木清华和饮水思源求助的时候都一律被认为是问如何用人眼判断高次谐波个数,以为我连Fourier变换都不知道。

我的想法就是通过跟背景噪音相比较来判断一个数据是否已与噪音无异。这也是人眼判断的一个准则。只不过人眼是通过“目测”(废话)来区别噪音和信号的。所以关键在于机器如何在有谐波信号存在的情况下单独测出当前的噪音水平。这好像又要预先知道噪音的类型。那么知道噪音类型之后又怎样做呢?到现在为止水木清华和饮水思源上都没人回答,帖子似乎就此沉了。

因此另一个退步的办法就是预先不让仪器动作,测量静止时信号的噪音,拿这个噪音当作仪器运作时情况的参考。但这要保证仪器运作时的噪音水平和静止时无异才行。对于ARES-RFS的motor信号情况貌似是如此的,transducer的信号如何还有待研究。

所以再次印证了我一直以来的认识就是“求助”是一项非常掉价的行为。那些什么小木虫之类的充满了求助、以求助帖为生、甚至还要订立什么金币策略来搞活求助市场的论坛我是从来不上的,事实证明就算我真有问题拿上去求助,也不见得有人能回答好。