主要内容

流并加速系统仿真

相控阵系统工具箱™可用于模拟端到端相控阵系统 - 生成传输波形,模拟目标返回,然后处理接收的信号以检测目标。这在示例中显示:模拟雷达接收器的测试信号波形设计,提高现有系统的范围性能。此示例显示如何在流模式下模拟此类系统,以便您可以长时间运行模拟并观察系统动态。

模拟设置

首先,使用一些基本参数设置雷达系统。整个雷达系统类似于所示的雷达系统波形设计,提高现有系统的范围性能例子。

fs = 6e6;bw = 3e6;C = 3E8;FC = 10E9;prf = 18750;num_pulse_int = 10;[波形,发射器,散热器,收集器,接收器,敏感,......目标,TGTMotion,Channel,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 = complex(zeros(num_pulse_samples,num_pulse_int));mf_pulses =复杂(zeros(num_pulse_samples,num_pulse_int));detect_pulse = zeros(num_pulse_samples,1);%模拟环路为了m = 1:10 * num_pulse_int%更新传感器和目标位置[SensorPos,SensorVel] =敏感(1 / PRF);[tgtpos,tgtvel] = tgtmotion(1 / prf);%计算传感器所示的目标角度[tgtrng,tgtang] = rangeangle(tgtpos,sensorpos);%模拟脉冲在目标方向上的传播pulse = waveform();[脉冲,txstatus] =发射器(脉冲);TXSIG =散热器(脉冲,TGTANG);TXSIG =通道(TXSIG,SENSORPOS,TGTPOS,SENSERVEL,TGTVEL);%反映目标脉冲tgtsig = target(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_pulses,'无组织');结尾HelperradarStreamDisplay(脉冲,ABS(RX_PURSENS(:,NN)),......ABS(mf_pulses(:,nn)),detect_pulse,......SQRT(阈值)* of(num_pulse_samples,1));结尾

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

由于雷达系统需要密集的加工,仿真速度是一个主要问题。运行100脉冲以查看代码后,您可能想要运行1000个脉冲。在解释的MATLAB模式下运行模拟时,可以使用以下时间测量过去的时间:

tic;HelperradarstreamRun;time_interpreted = toc.
time_interpreted = 13.3774.

如果模拟太慢,您可以使用Matlab Coder™加速它。MATLAB编码器可以生成编译的MATLAB®代码,导致处理速度的显着提高。在此示例中,MATLAB编码器从HelperradarStreamRun函数生成HelperradarStreamRun_mex函数。使用的命令如下所示:

Codegen HelperradarstreamRun.m.m.

当调用MEX版本时,仿真速度得到改善。

tic;HelperradarstreamRun_Mex;time_compiled = toc.
time_compiled = 5.6389.

加速改进取决于机器CPU速度和可用存储器等几个因素,但通常增加3-4次。请注意,Matlab编码器不会加上使用范围的数据可视化,并且仍由MATLAB解释器处理。如果可视化对您的模拟并不重要,那么您可以将它们删除以进行进一步的速度改进。

以下是采用此方法时的几个权衡:

  1. 与MATLAB中可用的相比,生成代码中的可视化功能非常有限。如果您需要保持模拟中的可视化,请使用编码器.Extrinsic.诡计;但这会减慢模拟。

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

  3. 当Matlab仿真时间很长时间,模拟速度效益变得更加重要。如果MATLAB仿真在几秒钟内完成,则通过从原始MATLAB仿真生成代码来获得太多。如前一个子弹中所提到的,通常需要在参数更改时重新编译代码。因此,首先首先使用MATLAB仿真来识别适当的参数值,然后使用生成的代码来运行长仿真。

概括

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