许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  拉格朗日Farrow滤波器与码多普勒模拟实现

拉格朗日Farrow滤波器与码多普勒模拟实现

阅读数 22
点赞 0
article_banner


重采样过程



Farrow算法



变量定义

kT_i-mT_s%3DTs(k%5Cfrac%7BT_i%7D%7BT_s%7D-m)%3DTs(i%2B%5Cmu_k)

算法表达式

理想滤波器:

y(kT_i)%3D%5Csum_i%7Bx%5Cleft%5B(m_k-i)T_s%5Cright%5Dh%5Cleft%5B(i%20%2B%20%5Cmu_k)T_s%5Cright%5D%7D

由于插值用的点数不可能是无穷的所以可以得到实际有限点滤波器表达如下所示:

y(kT_i)%3D%5Csum_%7Bi%3DI_1%7D%5E%7BI_2%7D%7Bx%5Cleft%5B(m_k-i)T_s%5Cright%5Dh%5Cleft%5B(i%20%2B%20%5Cmu_k)T_s%5Cright%5D%7D



拉格朗日多项式插值



拉格朗日插值法表达式:

L_n(x)%3D%5Csum_%7Bj%3D0%7D%5E%7Bn-1%7D%7By_ip_j(x)%7D

p_j(x)%3D%5Cprod_%7Bi%20%5Cin%20B_k(i%5Cne%20k)%7D%7B%5Cfrac%7Bx-x_i%7D%7Bx_k-x_i%7D%7D

采样拉格朗日插值法来代替Farrow中的滤波器系数。当t%5Cin%20%5Cleft%5Bm_kT_s%2C%20(m_k%2B1)T_s%5Cright%5D

时,利用m_k周围的点进行拉格朗日插值法得到一下表达式:

y(t)%3D%5Csum_%7Bi%3DI_1%7D%5E%7BI_2%7DC_ix%5Cleft%5Bm_k-i%5Cright%5D%3D%5Csum_%7Bi%3DI_1%7D%5E%7BI_2%7DC_ix((m_k-i)T_s)

根据拉格朗日插值法可以得到C_i:

C_i%3Dh(i%2B%5Cmu_k)%3D%5Cprod_%7Bj%3DI_1%2Cj%5Cne%20i%7D%5E%7BI_2%7D%7B%5Cfrac%7Bt-t_j%7D%7Bt_i-t_j%7D%7D

将Farrow的变量带入可以得到:

C_i(%5Cmu_k)%3D%5Cprod_%7Bj%3DI_1%2Cj%5Cne%20i%7D%5E%7BI_2%7D%7B%5Cfrac%7Bj%2B%5Cmu_k%7D%7Bj-i%7D%7D

因此当I固定时可以得到固定的系数,当点数为4时可以得到系数为:

C_%7B-2%7D%3D%5Cfrac%7B1%7D%7B6%7D%5Cmu_k%5E3-%5Cfrac%7B1%7D%7B6%7D%5Cmu_k

C_%7B-1%7D%3D-%5Cfrac%7B1%7D%7B2%7D%5Cmu_k%5E3%2B%5Cfrac%7B1%7D%7B2%7D%5Cmu_k%5E2%2B%5Cmu_k

C_%7B0%7D%3D%5Cfrac%7B1%7D%7B2%7D%5Cmu_k%5E3-%5Cmu_k%5E2-%5Cfrac%7B1%7D%7B2%7D%5Cmu_k%2B1

C_%7B1%7D%3D-%5Cfrac%7B1%7D%7B6%7D%5Cmu_k%5E3%2B%5Cfrac%7B1%7D%7B2%7D%5Cmu%5E2-%5Cfrac%7B1%7D%7B3%7D%5Cmu_k

参考https://zhuanlan.zhihu.com/p/706572873以及https://ieeexplore.ieee.org/abstract/document/231921可以得到4点3阶拉格朗日Farrow插值滤波器的matlab仿真代码对于待插点y(t)   t%5Cin%20%5Cleft%5Bm_kT_s%2C%20(m_k%2B1)T_s%5Cright%5D  ,可以得到matlab计算公式为

代码块


v3 = 1/6 * x(mk-2) - 1/2*x(mk-1) + 1/2 * x(mk) + -1/6 * x(mk+1);
v2 = 0 + 1/2 * x(mk-1) - x(mk) + 1/2 * x(mk+1);
v1 = -1/6 * x(mk-2) + x(mk-1) - 1/2 * x(mk) - 1/3 * x(mk+1);
v0 = x(mk);
y(t) = ((v3 * u + v2) * u + v1) * u + v0;

      复制成功
     
     
     
     

码多普勒仿真



码多普勒效应是指当波源和接收器相对运动时,码元的频率会发生变化的现象。由于物体相互靠近,接收信息的速度会变快。码多普勒和光多普勒同时发生,两者是相辅相成的,对于发送端没有发生多普勒的情况下,码的周期/光的周期,就可以得到一个码下光的相位发生了多少变化,无论多普勒多大,两者之间的运动关系如何,一个码对应的光的相位是不变的。

如何来仿真码多普勒?

码多普勒带来的直接效果就是码宽发生变化,在采样周期相同的情况下,码多普勒会让一个码的采样点的数量发生变化。使用拉格朗日Farrow滤波器进行码多普勒仿真,首先需要对原始信号进行高采样点数的上采样,对原始信号的采样点进行插值抽取获得采样率的信号。下面是部分matlab仿真程序:

代码块

clike


for i = 1 : len - 1
    nco(i + 1) = nco(i) - w;
    if(nco(i + 1) <= 0)
        u = nco(i) / w;
        nco(i + 1) = mod(nco(i + 1), 1);
        v3 = 1/6 * temp_D2 - 1/2*temp_D1 + 1/2 * temp_D0 + -1/6 * rcosmsg(i);
        v2 = 0 + 1/2 * temp_D1 - temp_D0 + 1/2 * rcosmsg(i);
        v1 = -1/6 * temp_D2 + temp_D1 - 1/2 * temp_D0 - 1/3 * rcosmsg(i);
        v0 = temp_D0;
        y(k) = ((v3 * u + v2) * u + v1) * u + v0;
        k=k+1;
    end
    w = target_rate / (symbol_rate+current_doppler) / sps;
    temp_D2 = temp_D1;
    temp_D1 = temp_D0;
    temp_D0 = rcosmsg(i);
end

      复制成功
     
     
     
     
  • 程序中目标输出的采样频率是定值,也符合实际系统中DA转换器件的特性,那么码速率是如何发生变化的,从本质上来说其实改变的是输入信号的采样频率,也就是时钟。w = target_rate / (symbol_rate+current_doppler) / sps;起到了关键作用。无论码速率是多少,一个码元过采样32个点并成形滤波后得到的数据是一样的,那么码率体现在什么地方?这就要考虑到rcosmsg的下标也就是i代表的含义,i代表的是输入的采样频率,for i = 1 : len - 1可以看成时钟,原始码率和发生码多普勒的后的码率所对应的rcosmsg是一样的,但是i所对应的时钟周期是不一样,也就是说该代码的码多普勒本质上是通过改变时钟来实现的。
  • 但是在FPGA的实现中这是很难实现的,那么假设i代表的时钟周期不变,这段代码还有意义吗? 可以这么看,输出信号的y(k)代表的是输出的第k个周期的信号大小,那么i的物理意义的变化与y(k)的大小值并无关系。那么是不是可以说即使是我时钟周期不变,只要我的y(k)的值大小一一对应了就没有问题?确实,无论你i对应的周期是否发生变化,你的y(k)都不会发生变化,但是在具体实现中生成y(k)的速度会发生变化,在`i`的周期不变的情况下可能会出现y(k)的值堆积或不够用的情况。那么只要解决了这个问题就可以实现完全的码多普勒。
具体代码可见:https://github.com/ShimokitaYui/Matlab-simulation-of-code-Doppler-based-on-Farrow-interpolation-filter

作者:Yukinohyj

邮箱:Yukinohyj@gmail.com



免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空