主要内容

流加速系统仿真

相控阵系统工具箱™可用于建模端到端相控阵系统-生成发射波形,模拟目标返回,然后处理接收信号来检测目标。这在示例中显示:雷达接收机模拟测试信号改进现有系统测距性能的波形设计.这个例子展示了如何在流模式下模拟这样的系统,这样你就可以长时间运行模拟并观察系统动态。

模拟装置

首先,用一些基本参数设置雷达系统。整个雷达系统与图中所示的类似改进现有系统测距性能的波形设计实例

fs = 6 e6;bw = 3 e6;c = 3 e8;fc = 10 e9;脉冲重复频率= 18750;num_pulse_int = 10;[波形,发射机,散热器,收集器,接收器,sensormotion,...目标,TGT运动,频道,匹配滤波器,tvg,阈值]=...helperRadarStreamExampleSystemSetup (fs, bw,脉冲重复频率,fc, c);

系统仿真

接下来,运行100个脉冲的模拟。在模拟过程中,使用四个时间范围来观察不同阶段的信号。前三个示波器显示发送信号、接收信号以及10个脉冲匹配后滤波器和增益调整信号。虽然发射信号是高功率脉冲序列,但示波器2由于传播损耗而显示出较弱的接收信号。此信号无法使用预设的检测阈值检测。即使经过匹配滤波和增益补偿后,对这三个目标的检测仍然具有挑战性。

%预分配fast_time_grid = 0:1 / fs: 1 / prf-1 / fs;num_pulse_samples =元素个数(fast_time_grid);rx_pulses =复杂(0 (num_pulse_samples num_pulse_int));mf_pulses =复杂(0 (num_pulse_samples num_pulse_int));detect_pulse = 0 (num_pulse_samples, 1);%模拟回路m = 1:10 * num_pulse_int%更新传感器和目标位置[sensorpos,sensorvel]=传感器运动(1/prf);[tgtpos,tgtvel]=tgtmotion(1/prf);%计算传感器看到的目标角度[tgtrng,tgtang]=范围角(tgtpos,sensorpos);模拟脉冲在目标方向上的传播脉冲=波形();[脉搏,txstatus] =发射机(脉冲);txsig =散热器(脉搏、tgtang);txsig =通道(txsig sensorpos、tgtpos sensorvel, tgtvel);反射目标的脉冲tgtsig=目标(txsig);在传感器接收目标返回rxsig =收集器(tgtsig tgtang);nn = mod (m - 1, num_pulse_int) + 1;rx_pulses (:, nn) =接收机(rxsig ~ (txstatus > 0));%检测处理mf_pulses (:, nn) = matchedfilter (rx_pulses (:, nn));mf_pulses (:, nn) = tvg (mf_pulses (:, nn));%每“num\u pulse\u int”个脉冲执行一次脉冲积分如果nn==num\u pulse\u int detect\u pulse=pulsint(中频脉冲,“非相干”);结束辅助数据流显示(脉冲,abs(rx_脉冲(:,nn)),...abs (mf_pulses (:, nn)), detect_pulse,...sqrt(阈值)*个数(脉冲样本数,1);结束

使用代码生成提高仿真速度

由于雷达系统需要密集处理,模拟速度是一个主要问题。在运行100个脉冲以检查代码后,您可能需要运行1000个脉冲。当您在解释的MATLAB模式下运行模拟时,您可以使用以下方法测量经过的时间:

tic;helperradarreamrun;时间=toc
时间=14.5883

如果仿真太慢,可以使用MATLAB Coder™加速。MATLAB编码器可以生成编译后的MATLAB®代码,从而显著提高处理速度。在这个例子中,MATLAB编码器从helperRadarStreamRun函数生成一个helperRadarStreamRun_mex函数。

codegenhelperradarreamrun.m
代码生成成功。

当调用mex版本时,模拟速度会得到提高。

抽搐;helperRadarStreamRun_mex;time_compiled = toc
time_compiled = 5.8450

加速改善取决于几个因素,如机器CPU速度和可用内存,但通常会增加3-4倍。请注意,MATLAB编码器并没有加快使用范围的数据可视化,而是由MATLAB解释器处理。如果可视化对模拟不重要,则可以删除它们以进一步提高速度。

以下是采用这种方法时需要考虑的几个权衡:

  1. 与MATLAB中可用的功能相比,生成代码中的可视化能力非常有限。如果您需要在模拟中保持可视化,请使用coder.extrinsic戏法但这会减慢模拟的速度。

  2. 与原始MATLAB代码相比,生成的代码不允许动态更改变量类型和大小。生成的代码通常针对特定的变量类型和大小进行优化;因此,任何可能由PRF更改引起的变量类型和大小更改都需要重新编译。

  3. 当MATLAB仿真时间较长时,仿真速度效益变得更为重要。如果MATLAB仿真在几秒钟内完成,那么从原始MATLAB仿真生成代码不会获得太多好处。如前一项所述,当参数更改时,通常需要重新编译代码。因此,最好先使用MATLAB仿真来确定适当的参数值,然后使用生成的代码来运行长期仿真。

总结

这个例子展示了如何在流模式下执行雷达系统仿真。它还展示了如何使用代码生成来加速模拟。最后讨论了生成代码与MATLAB代码之间的权衡。