前几日,一直纠结在一个问题里面。基本上研究清楚了,感觉值得分享,是信号处理里面比较有意思的一个问题,就是截短的信号处理依旧要考虑数字域处理时相位连续的问题。很多时候,类似这样特别基础的问题,却很难想得很明白,着实让人头疼。
问题的引入:
GPS信号做捕获算法,由于时频搜索的相关运算量太大,所以就用fft的算法来做相关运算。数据序列,频率序列和CA码序列三个序列的相关,理论上感觉任何两者之间先乘之后,在对两个序列进行fft变换做点乘,ifft回去即可得到相关峰。而在仿真的过程中,却发现,经常会出现三个相关峰的现象。基本上是在最大的相关峰两侧,间隔1khz左右的地方,会再有两个很明显的相关峰。
问题的原因分析:
用FFT的方式做相关,相当于把一个截短的序列做了周期延拓,然后做相关。周期延拓的信号在周期接缝的地方,如果序列本身的相位不连续,则会引入误差。保证这个周期延拓的信号的相位连续看起来是解决多峰问题的关键。
尝试的方法与分析:
第一种方法:数据序列与频率序列先乘后,再与CA码序列通过FFT方法做相关运算。数据先乘频率旋转序列,之后的序列本身相当于去掉了频偏的数据序列,所以周期延拓的等效在每ms的接缝处是相位连续的,然后与CA码序列做FFT算法相关,不会出现多峰。
第二种方法:CA码序列与频率序列先乘后,再与数据序列通过FFT方法做相关运算。用CA码序列先乘频率旋转序列,这造成了一个新的数据序列,周期延拓的效果在每ms的接缝处存在相位不连续点,而原始数据本身也存在相位不连续点,这两个序列通过FFT做相关运算,则会出现1khz左右的多峰。
第三种方法:将两种算法里面参与运算的序列都补齐一半的零,然后再做FFT相关。这本身就引入了相位不连续点,且两种算法的效果基本等同了,所以都出现多峰。
第四种方法:将两种算法里面参与运算的序列都多取一半的数据,而不是补零,然后再做FFT相关。第四种算法跟第一种方法时得到的结果基本一致,但相关峰本身能量更突出。第二种算法依然存在多峰,但由于相关峰本身能量更突显,其他峰的能量相对而言得到压制,使得信噪比得以提高。
第五种方法:将多个ms(例如10ms)的数据序列,频率序列和CA序列先做点乘后,再直接做多个ms(10ms)的长度的FFT变换,实现相关运算。由于序列本身的长度远远超过了1ms,则在1ms接缝的地方肯定是相位连续的。所以这种方法是确定没有多峰问题。
结论:按照第五种方法来做,是对的,但运算量相对来说比较大。按照第一种方法来处理,效率最高,多峰问题基本得到解决。
其他还会有一些时候仿真看到多峰,基本上还是算法不正确,人为引入相位不连续导致的。在此不赘述了。
用户1498631 2013-4-17 21:48
用户1498631 2013-4-17 21:46
用户1685503 2013-4-17 20:56
用户1277994 2013-4-16 14:32
用户1602177 2013-4-16 10:53
欢迎博主~~
多谢您的技术分享~~
提醒一下,图片要在本地上载,不然容易挂掉(现已为您在本地上传),以后请注意~~
另外,请博主更新一下您的个人信息,好让大家能够更迅速地了解到您和您的分享~~