• 多普勒失真信号采样Matlab模拟分析


    多普勒失真信号采样Matlab模拟分析

    方案

    • 水声通信指的是使用声信号在水中数据传输。

      相对而言。电磁信号在水中吸收严重衰减过快,光信号受水中悬浮颗粒的影响,也无法完毕远距离传输。

      这两种信号的传播距离约为数百米,而声信号在水中传播距离达到数十千米。成为水下通信的首选方式。

    • 水声通信的一个重大挑战就是运动带来的多普勒。

      多普勒造成信号的频率漂移,影响系统性能,因此很有必要消除多普勒带来的影响。而多普勒在时域的表现为信号的长度压缩和扩展。即'y(t) = x((1+a) * t)',当中a为多普勒因子。而假设预计出多普勒因子,之后採用重採样技术就能够恢复得到原始信号x(t) = y( t/(a+a) )

    • 重採样的意义就是插值。从一个信号插值得到多普勒影响前后的信号。而1+a一般为小数,尽管採用多相滤波能够达到非常好的插值效果,但复杂度太高。

      相比之下,线性插值、样条插值等方式运算量小,在做数字系统的时候更加合适

      Matlab一维插值

    • MATLAB中的插值函数为interp1(),其调用格式为 yi=interp1(x,y,xi, 'method')。当中x,y为观測数据点,xi为插值(自变量)向量,yi为xi的插值结果(函数值)。
    • 'method'表示採用的插值方法。

      取值'nearest'为最邻近插值,'linear'是线性插值,'spline'是三次样条插值,'cubic'为分段三次Hermite插值。

      默认情况为线性插值,三次样条效果最平滑。三次效果多项式介于两者之间。

    • 线性插值:通过所在位置相邻两点的值来插值。已知f(a)和f(c),b在a,c中间,求f(b)的公式为:f(b) = f(a) + (b-a)/(c-a) *[f(c) - f(a)]

    • 分段三次Hermite插值:分段让邻近两点的导数同样,曲线更平滑。
    • 样条插值:样条插值通常比多项式插值好用。

      用低阶的样条插值能产生和高阶的多项式插值类似的效果,而且能够避免龙格现象。

      线性插值的误差

    • 插值不免会造成信号失真,定义原始信号功率与噪声功率的比值为信干比,计算公式为:SDR = 10 * log10( power(x(t)) / power(x(t) - x'(t) )

      x'(t)为插值后得到的信号。

    • 而对于线性插值。SDR与信号採样频率fs和信号频率f的比值有近似例如以下关系:SDR(dB) = 40 * log10( fs/f /2 )

      仿真对照

      代码例如以下。

    • 首先设置多普勒因子dop,插值方法,採样率与信号频率的比例ns。最小值取2。相应奈奎斯特频率。
    • 之后对于每一个ns值,生成相应的初始信号a,之后插值以对信号加入多普勒。因spline方法造成的误差最小,选择作为加入多普勒的方法。

    • 採用不同的插值方法去除多普勒。

      由于插值造成信号长度变化,每次都仅仅略去尾部6000个数据点。

    • 之后绘图,每一个ns相应一张图,并注明实測SDR以及线性插值的理论SDR值以作对照。
    dop = 0.05;
    intermethod = 'nearest';% nearest linear cubic spline 
    
    %n: fs / fc
    ns = 2:7;
    figure;
    
    for n = ns
        a = sin(2*pi*(1+rand():1:50000)/n);
    
        b=interp1([0:length(a)-1],a,[1-1:length(a)-6000-1]*(1+dop),'spline');
    
        c=interp1([1-1:length(b)-1],b,[1-1:length(b)-6000-1]/(1+dop),intermethod);
    
        subplot(3,ceil(length(ns)/3),n-1);
        plot(a(29901:30000));
        hold on;
        plot(c(29901:30000),'r');
    
        error = sum(abs(a(1:30000)-c(1:30000)) .^2) / sum(abs(a(1:30000)) .^2);
        title(['fs/fc = ',num2str(n),' SDR = ',num2str(10*log10(1/error)), 'dB VS', num2str(40*log10(n/2)),' dB'])
    
    end

    仿真结果分析

    • 临近点插值仿真结果:性能极差。无法使用。


    • 线性插值仿真结果:可见与理论值符合的较好。

    • 分段三次Hermite插值插值仿真结果:大约提高5dB,但带来的是大量的计算。

    • 三次样条插值仿真结果:性能很好,但最复杂。由于加入多普勒时也採用了样条插值,仿真结果加上3dB才应该是理论结果。


    • 结论

      假设採用重採样来去除多普勒带来的影响。而且採用较为有用的线性插值法,若要达到约19dB的通信信噪比要求。须要提高採样率至少为6倍信号频率。
        
        
        
      转载请注明作者:Focustc。博客地址为http://blog.csdn.net/caozhk。原文链接为我点

    版权声明:本文博客原创文章,博客,未经同意,不得转载。

  • 相关阅读:
    ios代码大全
    MYSQL数据库之如何在已经建立好表之后重构数据表
    关于cookie在一个页面设置但是在另外一个页面获取不到的原因
    cookie的那点事儿
    关于a标签不能调用js方法的小细节,你注意到了么?
    关于mysql预处理技术的一点小心得
    关于delete使用limit的一些注意事项
    DP1 等分连续1-N个数的划分种数
    Spring 编程式事务和声明式事务管理
    java https client信任所有证书
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4612258.html
Copyright © 2020-2023  润新知