如何加多普勒可能是我遇到的第二个难题,现在已经有点记不清楚我之前根据资料自己写的代码了,总之奇奇怪怪的,后来就去问了老师,老师说用NCO来产生,原理好像是查表取地址。
反正这一块之前没怎么搞清楚,就直接根据老师讲的代码写了,但是后来仿真算法的时候怎么都不对,一步步调试算法的时候才仔细研究了一下,虽然只有短短一行,但是我也弄了很久才弄明白(当然我自己觉得我可能明白了,也有可能其实是错的,如果错了大家可以指出来)。
多普勒效应的理论知识就不说了,主要是因为接收端的相对运动产生的,我只讲代码怎么写。
我会仔细讲一下,争取把我想说的说出来,所以有可能会分几次讲。
这一次主要通过图展示查表取地址是什么意思
首先把代码亮出来:
其中Fs是采样率,fc是载波频率,Rc是发送的码速率,Rc_rec是接收端的码速率,phase是接收端的码相位的误差,一般在精同步阶段是±1chip,f_doppler是多普勒频偏,theta是发送信号的初相。
data是发送端的信号,signal是接收端的信号
我放几张图大家就会更清楚了
首先我们画一下查表查的什么表
假设Fs = Rc;时
下面是整体图,由于横坐标很大,所以近似为一条直线。65472 = 64 * 1023,64比特时发送的数据长度,1023是扩频码的长度,所以扩频后的长度就为65472
我们只看横坐标为0-10时有:
出现的放大图不是直线的原因是由于floor是向负无穷取整,所以改成round(向最近的整数取整)时图会更好看
下面是用round时横坐标为0-10的图
后面几节会讲一下为什么用floor不用round
假设Fs = 4 * Rc;时
与Fs = Rc;的整体图相比,横坐标放大了四倍
放大了看0-10横坐标的图就更清楚了
相当于每个点都停留了4次,也就是说当ts变化4次时,黄线区域的取值才变化一次,然后就相当于取data中的一个值,这就是根据采样率查表取地址,不知道大家有没有意会到
下一节会继续说一下怎么加的码相位和多普勒里面的小问题。
如果有错误的地方各位大佬可以指正一下,谢谢。
ps:不知道怎么把图缩小,大家将就看一下
文章评论(0条评论)
登录后参与讨论