matlab模拟超声波信号_异步光学成像信号处理简介(2)

这个是本系列文章的第二篇,作者受过学术训练有限,写作科普文经验为零,希望大家多多包涵,如有纰漏建议,敬请指出,谢谢:)
细胞模型信号
前一篇文章说,我们测得的是一个声波的布里渊频率,本文章我将简单介绍如何生成聚苯乙烯+水的细胞模型的信号。
本仿真模型将基于聚苯乙烯样品形成。因此,其布里渊振荡频率本质上将是两种材料的两个相应的布里渊振荡频率的前后相连。第一个正弦波会在聚苯乙烯的布利鲁因频率上,然后随着声学波面从聚苯乙烯材料移入水中,频率会转移到水的布里渊频率上。
对于这个信号,其本质就是两个不同频率的正弦波,那么除此以外还有那些因素呢?
1,信号衰减
这两个正弦波的振幅会随着超声波所携带的能量在材料中传播时迅速衰减而衰减。这个我们暂且称之为衰减函数
2,本底信号
在检测到的信号中还存在着热背景,因为泵束的能量不仅会转化为声能引起布利鲁因散射,而且还会产生热和材料的位移。在这个模型中,我们将本底简化成一个指数衰减模型。
(实际上,因为激光的能量不仅仅被转化成热能,本底的情况还要复杂得多,我将在以后的文章中探讨)
3,高斯噪音
MATLAB agwn(),不需要多解释,宽频的白噪音,数字化后的模拟信号都会有。
还有一个值得注意的点,生成两个正弦波的时候要算好第一个的相位,保证第二正弦波的起振相位和第一个相同,不然在单个傅里叶窗口不大的情况频谱里会有一个nasty的高频噪音。
所以,两个不同频率的正弦波相连,生成的模拟信号是这样的

所以本信号其实非常简单,对于最简单的模型,其本质只有两个正弦波。那么,在重建空间信息之前,要对这个信号进行什么预处理呢?
信号预处理:滤波
很简单,首先要把那个热背景干掉,不然频谱里接近DC的部分的幅度会干扰对于两个被观测频率的处理。
预处理的方法很简单,首先想到,既然是接近DC的低频信号,试一试高通滤波

好吧,这个和我们预想的不太一样,主要不一样的地方是什么呢?第一个部分应该是10Ghz左右的高频信号,但是这里的时域信号看上去像是被幅度调制了(是不是像乘了一个2,3个Ghz的正弦?)。
再仔细看看FFT的结果

额,看上去那个3.3Ghz的是什么鬼?显然是band没选好,是不是应该再把通频(passband)搞高一点?不行,因为单独调高passband,你最终得到的频谱只会把3Ghz那个波峰往高频推,以至于把你的有效信号搞没,因为4Ghz以上的都是有效信号。
信号预处理:polyval()
此路不通,怎么办呢?MATLAB里有个好用的函数,polyval()。
这个函数是什么用呢?就是拟合一个函数,这里因为正弦波的幅度相对于本底函数小得多,所以polyval()拟合的出来的函数,实际上就是本底的函数。于是,我们用polyval()拟合,再去吧拟合的结果从原信号里减掉,得到这个:

额,从时域上看好像高频噪声有点多,不过没有明显的低频干扰了,看上去不像是奇怪的调制信号,就像是两个简单的正弦波。那么我们再来看一看时域

excellent!信号看上去质量很好,两个波峰一个10Ghz,一个5Ghz,和我们模拟的一模一样。这时一个明显的现象就是5Ghz的波峰幅度更小,为啥呢?因为声波一开始在聚苯乙烯样品里,频率10Ghz,后来传播进水里,频率5Ghz,这个过程中就是前文提到的衰减,所以,5Ghz的波峰要矮点一点。
好了,大致介绍了信号本身的特性,下一篇短文打算写一写怎么从这个信号算两种材料的厚度。
更多推荐


所有评论(0)