东方耀AI技术分享

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 1206|回复: 1
打印 上一主题 下一主题

[C/C++] radar_static_target_simulator_cc源码深入研究

[复制链接]

1365

主题

1856

帖子

1万

积分

管理员

Rank: 10Rank: 10Rank: 10

积分
14446
QQ
跳转到指定楼层
楼主
发表于 2021-5-26 15:27:50 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
radar_static_target_simulator_cc源码深入研究


模拟给定信号在点目标上的后向散射


输入信号是传输信号。输出信号是接收到的反向散射信号,每个接收天线包含一个输出信号


衰减取决于中心频率、雷达截面、目标距离和光速:


延迟取决于目标的距离:


多普勒频移取决于相对速度和中心频率:


将这些信号相加以产生总和信号:


矢量确定每个RX天线与原点的距离(注:TX天线始终位于原点)


对于一个简单的单站SISO雷达,只需将位置_rx设置为[0]




std::vector<float> d_range, d_velocity, d_rcs, d_azimuth, d_position_rx;
int d_samp_rate;
float d_center_freq;
int d_hold_noutput;
bool d_rndm_phaseshift;


bool d_self_coupling;
float d_self_coupling_db;


int d_num_targets;




// Get num targets
d_num_targets = range.size();


多普勒频率公式:
d_doppler[k] = 2 * d_velocity[k] * d_center_freq / c_light;




C++标准模版库(STL)中的vector实现变长数组
std::vector<std::vector<float>> d_timeshift_azimuth;  向量里有向量 就是矩阵了


  1. #include <iostream>
  2. #include <cmath>
  3. #include <ctime>
  4. #include <vector>


  5. using namespace std;

  6. #define GR_M_PI 3.14159265358979323846            /* pi */

  7. void print_vector(vector<float> &v){
  8.     for(int i=0; i< v.size(); i++){
  9.         cout << v[i] << ",";


  10.     }
  11.     cout << endl;
  12. }

  13. int main(){
  14.     float angle=45;
  15.     cout << "std::sin()=" << std::sin(angle * GR_M_PI / 180.0) << endl;

  16.     cout << "std::sqrt()=" << std::sqrt(100) << endl;

  17.     cout << "std::pow()=" << std::pow(2, 10) << endl;

  18.     cout << "std::exp()=" << std::exp(1) << endl;

  19.     cout << "std::fmod()=" << std::fmod(10, 3) << endl;

  20.     cout << "std::time()=" << std::time(NULL) << endl;

  21.     std::srand(666); // 以666为随机数生成器的种子  seed rand
  22.     cout << "std::rand()随机数=" << std::rand() << endl;

  23.     vector<float> my_vector(8, 10);
  24.     print_vector(my_vector);
  25.     //fill_n函数的作用是:给你一个起始点,然后再给你一个数值count和val。把从起始点开始依次赋予count个元素val的值

  26.     std::fill_n(my_vector.begin(), 4, 20);
  27.     print_vector(my_vector);

  28.     std::fill_n(my_vector.begin()+3, 3, 33);
  29.     print_vector(my_vector);



  30.     return 0;
  31. }

复制代码



有难度了:work仿真模块 支持多目标 支持静止与运动 都是点目标  支持多幅Rx天线

对noutput_items的理解不到位



// compute cos for a block of phase angles
    void cos(float* output, int noutput_items, double ampl = 1.0)
    {
        for (int i = 0; i < noutput_items; i++) {
            output = (float)(gr::fxpt::cos(d_phase) * ampl);
            step();
        }
    }





















signal_generator.png (110.57 KB, 下载次数: 81)

signal_generator.png
让天下人人学会人工智能!人工智能的前景一片大好!
回复

使用道具 举报

0

主题

98

帖子

200

积分

中级会员

Rank: 3Rank: 3

积分
200
沙发
发表于 2021-11-23 19:42:13 | 只看该作者
让天下人人学会人工智能!人工智能的前景一片大好!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|人工智能工程师的摇篮 ( 湘ICP备2020019608号-1 )

GMT+8, 2024-6-2 19:06 , Processed in 0.206421 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表