一个信号signal(t) t=[-inf, +inf]和频谱spectrum(f) f=[-inf, +inf]之间的变换关系就是Fourier变换。 一个确定信号的频谱是当然是确定的,但是随机信号的频谱是不确定的。 如果把每次的观测样本sample(t) t=[-inf, +inf]称为该随机过程的一个实现, 那么由各次实现作Fourier变换得到的频谱不一定相同。 实际上这很容易理解,因为Fourier变换是一一对应的,不同信号的频谱自然不同。 问题也就来了,本来频谱表征了某个信号在频域上的特征,现在明明是同一个随机过程的不同实现, 他们的频谱却不相同了,这如何是好? 很自然地,我们需要在时域上寻找一个确定的函数表征某个随机过程, 那么对这个函数作Fourier变换后得到的频域特征就是唯一的了。(以不变应万变?^_^) 对于0均值平稳随机过程而言,这个确定的时域函数就是自相关auto_correlation(r) r=[-inf, +inf], 其中r表示时间间隔,则auto_correlation(r0)表示时间上相距r0的两个随机样本间的相关程度。 那么对自相关作Fourier变换之后得到的又是什么呢?就是所谓的功率谱power_spectrum(f) f=[-inf, +inf], 个人认为,严格的称呼应该是功率(密度)谱。 power_spectrum(f)是一个函数,横坐标是f,也就是频率,以Hz为单位。 纵坐标表示功率密度,单位是W/Hz。注意,不是功率! 因为如果在某个区间[f1, f2]上对power_spectrum(f)进行积分, 得到的是该信号在这个频率范围内的功率,而并非能量。 可以从下面这个角度理解,随机信号是能量无限信号,因为从-inf到+inf,信号一直存在(不等于0)。 观测的时间越长,能量越大,因此不适合作为度量指标。而随机信号的功率则是有限的。 对于我们这些用惯了计算机的人,连续的东西似乎很难理解,也很难用MATLAB仿真。 好吧,让我们进入时域离散信号的世界,继续讨论。(但是请记住,连续才是世界的本相!) 对于一个离散随机信号序列,很容易通过样本计算得到它的自相关函数的估计。 参见《现代信号处理》,有无偏和渐进无偏的两种估计子。 既然得到了自相关函数,那么直接FFT不就算出功率谱了吗?没错! 这就是所谓的经典谱估计。那些改进啦,什么加窗、分段,不过是改进效果的伎俩而已。 根本思想决定了经典谱估计的本质和固有缺陷。 因为FFT不可能对无限长的序列进行运算,所以必然需要对自相关函数进行截取, 也就是所谓的加窗,这造成了频谱的能量泄漏。 因为对N点数据进行FFT得到的频域序列也是N点的,所以这样得到的频谱分辨率受FFT点数限制, 这也是经典谱估计分辨率不高的原因。 为了克服这些缺陷,现代ARMA谱估计终于出场了。 ARMA谱估计的基本原理基于以下这一事实: 大多数随机过程都可以通过白噪声激励一个线性系统产生。 白噪声的功率谱是常数,所谓的白色谱嘛!于是这个线性系统的传递函数确定了随机过程的特性。 传递函数的分子分母上的参数也就是所谓的ARMA参数啦。 当我们以自相关函数作为约束条件求解这些ARMA参数时,实际上我们是在寻找一个滤波器, 使得白噪声通过这个滤波器以后得到的信号的功率谱等价于我们要等效的那个随机过程的功率谱。 最后,让我们回到功率谱曲线,换一个角度去思考。 我们能不能把曲线直接变成表达式呢?对了,应用数学里有一种方法叫做拟合! 其实我们刚才讨论的ARMA谱估计不就是得到了模型的参数吗? 因此,参数化谱估计本质上也就是一种拟合!神奇吧?呵呵~~~
功率谱
最新推荐文章于 2023-11-16 10:17:19 发布