• 雷达实测数据的信噪比


    最近处理了一段时间的雷达实测数据,其中有一个很重要的指标就是信号的信噪比,信噪比定义很简单就是信号的功率除以噪声功率,一般取dB (其中如果分子分母是功率的话,那么公式为10log10(X),如果分子分母是幅度的话,公式为20log10(X)),但是在雷达实测数据中我们是不知道信号的功率和噪声的功率,这需要我们进行脉冲压缩后,峰值代表信号功率,剩下取一部分进行统计分析,得到噪声功率。

    下面两张图分别是实测雷达信号图和脉压后信号图,我会把这两个文件传到资源中,大家可以自己尝试处理一下。

    对脉压后的图像对数化,可得(方便大家看他的趋势):

    代码:

    1. clc
    2. clear
    3. close all
    4. %% 数据读取与波形
    5. data = load('20230920-234830-slave-PRT1-data'); % 雷达实测信号
    6. data1 = load('20230920-234830-slave-PRT1-data1'); % 脉冲压缩后的信号
    7. figure,plot(real(data.data))
    8. figure,plot(abs(data1.data1))
    9. figure,plot(db(abs(data1.data1)))
    10. N = length(data1.data1); % 信号长度
    11. [~,N_max] = max(abs(data1.data1)); % 峰值坐标
    12. %% 功率
    13. s_pointer = N_max;
    14. s = sum(abs(data1.data1(s_pointer)).^2)/(length(s_pointer));
    15. n_pointer = [1:N_max-50,N_max+50:N];
    16. n = sum(abs(data1.data1(n_pointer)).^2)/(length(n_pointer));
    17. SNR = 10*log10((s-n)/n);
    18. %% 幅度
    19. s_pointer = N_max;
    20. s = sum(abs(data1.data1(s_pointer)))/(length(s_pointer));
    21. n_pointer = [1:N_max-50,N_max+50:N];
    22. n = sum(abs(data1.data1(n_pointer)))/(length(n_pointer));
    23. SNR = 20*log10(s/n);

    其中功率算出来的SNR为:58.561761884213010;幅度算出来的SNR为:59.367852645436710,相差一个dB,推荐功率计算方法(即幅度平方)

    注意:我之前认为在脉压图像中,除了信号区就是噪声区,这个其实是不对的,我们只需要从统计意义上,能够找到一个区域能代表噪声就好,我之前犯的错误就是噪声区里包含了部分信号的能量,导致SNR变小。

  • 相关阅读:
    详细说说什么是单元测试的边界
    Vue前端添加水印功能
    鲜花销售小程序|基于微信小程序的鲜花销售系统设计与实现(源码+数据库+文档)
    HTML/CSS 基础 2
    什么是 DNS 隧道以及如何检测和防止攻击
    深度学习100例 —— 生成对抗网络(GAN)手写数字生成
    机器学习笔记之粒子滤波(一)序列重要性采样
    JavaWeb-深度解析转发和重定向
    计算两个向量的叉积numpy.cross()
    1111 Online Map
  • 原文地址:https://blog.csdn.net/weixin_42664107/article/details/133438863