主要内容

流加速系统仿真

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

仿真设置

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

fs = 6 e6;bw = 3 e6;c = 3 e8;fc = 10 e9;脉冲重复频率= 18750;num_pulse_int = 10;[波形,发射机,散热器,收集器,接收器,sensormotion,...目标,tgtmotion、通道matchedfilter, 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] = sensormotion(1 /脉冲重复频率);[tgtpos, tgtvel] = tgtmotion(1 /脉冲重复频率);%计算传感器看到的目标角度[tgtrng, tgtang] = rangeangle (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_pulse_int'脉冲如果Nn == num_pulse_int detect_pulse = pulsint(mf_pulse,“非相干”);结束helperRadarStreamDisplay(脉冲、abs (rx_pulses (:, nn)),...abs (mf_pulses (:, nn)), detect_pulse,...返回值(阈值)*的(num_pulse_samples,1));结束

使用代码生成提高模拟速度

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

抽搐;helperRadarStreamRun;time_interpreted = toc
time_interpreted = 14.5883

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

codegenhelperRadarStreamRun.m
代码生成成功。

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

抽搐;helperRadarStreamRun_mex;time_compiled = toc
time_compiled = 5.8450

加速改进取决于多个因素,如机器CPU速度和可用内存,但通常会增加3-4倍。请注意,使用作用域的数据可视化不会被MATLAB Coder加速,仍然由MATLAB解释器处理。如果可视化对您的模拟不是至关重要的,那么您可以删除它们以进一步提高速度。

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

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

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

  3. 当MATLAB仿真时间较长时,仿真速度效益显得尤为重要。如果MATLAB仿真在几秒钟内完成,那么从原始MATLAB仿真中生成代码不会获得多少好处。正如前面提到的,当参数发生变化时,通常需要重新编译代码。因此,可能最好先使用MATLAB仿真来识别合适的参数值,然后使用生成的代码运行长时间的仿真。

总结

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