雷达系统的数据流,并加速模拟

相控阵系统工具箱可用于一个终端到终端的雷达系统进行建模 - 生成一个发送的波形,模拟目标返回,然后处理所接收的信号以检测目标。这示出在实施例:设计基本单基地雷达脉冲改进现有雷达系统性能的波形设计。这个例子显示了如何在流模式模拟这样的系统,这样你就可以运行仿真了很久,观察系统动力学。

仿真设置

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

FS = 6E6;BW = 3E6;C = 3E8;FC = 10E9;PRF = 18750;num_pulse_int = 10;[波形,发射器,散热器,集电极,接收机,sensormotion,...目标,tgtmotion、通道matchedfilter, tvg阈值]=...helperRadarStreamExampleSystemSetup(FS,BW,PRF,FC,C);

系统仿真

接下来,运行模拟100个脉冲。在这个模拟中,四个时间,范围是用来在不同阶段观察信号。前三作用域显示10个脉冲的发送信号,接收到的信号,和后匹配滤波器和增益调整后的信号。虽然所发送的信号是一个高功率脉冲串,范围2示出弱得多的接收信号由于传播损失。这个信号不能使用预设检测阈值来检测。即使经过匹配滤波和增益补偿,它仍然是具有挑战性的检测所有三个目标。

%预fast_time_grid = 0:1 / fs的:1 / PRF-1 / FS;num_pulse_samples = numel(fast_time_grid);rx_pulses =络合物(零(num_pulse_samples,num_pulse_int));mf_pulses =络合物(零(num_pulse_samples,num_pulse_int));detect_pulse =零(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)=匹配滤波器(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.9010

如果仿真速度太慢,你可以使用MATLAB编码器加速这一过程。MATLAB编码器可以生成编译导致处理速度显著改善MATLAB代码。在这个例子中,MATLAB译码器产生从helperRadarStreamRun功能的helperRadarStreamRun_mex功能。所用的命令如下所示:

codegen helperRadarStreamRun.m

当调用MEX版,仿真速度提高。

抽搐;helperRadarStreamRun_mex;time_compiled = TOC
time_compiled = 3.3729

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

下面是一些权衡采取这种方法时,需要考虑:

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

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

  3. 在MATLAB仿真时间较长的情况下,仿真速度的提高显得尤为重要。如果MATLAB仿真在几秒钟内完成,从原始MATLAB仿真中生成代码不会获得太多好处。正如前面提到的,当参数改变时,通常需要重新编译代码。因此,最好先使用MATLAB仿真来确定适当的参数值,然后使用生成的代码来运行长时间的仿真。

总结

这个例子显示了如何在流模式进行雷达系统仿真。它也显示了代码生成如何可以用来加速仿真。使用所生成的代码和MATLAB代码之间的折衷在端部进行了讨论。