我有100,000个信号$ x [n] $的采样,采样频率为20kHz。数据是来自旋转机器的振动数据,并且包含与机器旋转速度相关的重要频谱分量。 FFT不会产生我想要的结果。

所以我想使用诸如Kay估计器之类的估计器,该估计器允许短期估计,但是假设信号模型为:

$ x [n] = A \ exp(j \ omega n + \ theta)+ z [n] $

其中$ n $ = 0 ... 99,999,$ A $是幅度,$ \ omega $是要估计的频率,$ \ theta $是初始偏移,$ z [n] $是复数噪声。

但是,我的信号是真实的值更像:

$ x [n] = A \ cos(\ omega n + \ theta)+ z_r [n] $

其中$ z_r $和$ A $现在是实值。

如何将我的实值信号转换为复值信号,以便可以使用Kay的估计器?

#1 楼

将真实信号转换为解析表示的工具是希尔伯特变换。
假设您的信号是一些螺旋旋转的投影,其振幅在实时平面上具有可变幅度,如下图所示。


给定真实部分,希尔伯特变换会产生如此复杂的信号。这是一个线性变换,在频域中很容易做到。无需深入探讨其数学和导数,信号的傅立叶变换虚部与实际信号乘以$ -j $(旋转90度)相同。通过真实信号的对称特性,您可以得到以下关系:

所有负频率分量变为0。
您的DC分量保持不变。
所有正频率分量都加倍

例如,在Matlab中,您可以执行以下操作:
a = rand(1,201);

hilbert_a = ifft( [ 1, 2*ones(1,100), zeros(1,100)] .* fft(a) );

,或仅使用内置的hilbert函数。

评论


$ \ begingroup $
对不起,我应该引用来源。从这里
$ \ endgroup $
– Phonon
2011年8月18日在12:56

#2 楼

如果要使用Kay的估计器,则需要将感兴趣的信号转换为其“解析信号”表示形式。这从根本上消除了原始实值信号中的冗余(例如负)频率。由于在此过程中破坏了信号频域表示的共轭对称性,因此结果很复杂。然后,您应该能够应用所需的技术。

还可以使用其他方法来解决频率跟踪问题。可以应用LMS算法执行瞬时频率估计(Haykin,“自适应滤波器理论”,第244-246页)。另外,您可以使用锁相环跟踪随时间变化的离散频谱分量。正确的解决方案取决于您的最终目标是什么,以及信号的具体特征是什么。