End-2-End的雷达系统仿真
本例说明如何将基本工具箱工作流程应用于以下情况:假定您有一个工作在 4 G H z 4GHz 4GHz的全向天线。 假设天线位于全局坐标系的原点。 最初位于 ( 7000 , 5000 , 0 ) (7000,5000,0) (7000,5000,0)处的目标具有 0.5 0.5 0.5平方米不变的雷达横截面。 目标以 ( − 15 ; − 10 ; 0 ) (-15;-10;0) (−15;−10;0)的恒定速度矢量移动。 您的天线以 5 k H z 5kHz 5kHz的脉冲重复频率(PRF)发射持续时间为 1 μ s 1μs 1μs的十个矩形脉冲。 脉冲传播到目标,从目标反射,传播回天线,并被天线收集。 天线以单基模式(monostatic mode)运行,仅在发射机不工作时才接收。
1 波形模型
用
phased.RectangularWaveform
来创建一个所需的波形:
waveform = phased.RectangularWaveform('PulseWidth',1e-6,...
'PRF',5e3,'OutputFormat','Pulses','NumPulses',1);
创建了一个PW为 1 μ s 1\mu s 1μs,PRF为 5 K H z 5KHz 5KHz的矩形脉冲。
2 天线模型
用
phased.IsotropicAntennaElement
构建天线模型。设置天线的频段为 1 − 10 G H z 1-10GHz 1−10GHz,全向天线。
antenna = phased.IsotropicAntennaElement('FrequencyRange',[1e9 10e9]);
3 目标模型
用
phased.RadarTarget
来构建目标模型。目标RCS为 0.5 m 2 0.5m^2 0.5m2,照射到目标上的电磁波为 4 G H z 4GHz 4GHz,电磁波传输速率为光速。
target = phased.RadarTarget('Model','Nonfluctuating','MeanRCS',0.5,...
'PropagationSpeed',physconst('LightSpeed'),'OperatingFrequency',4e9);
4 天线和目标的传输平台模型
用
phased.Platform
对天线和目标的坐标和移动进行建模。本例中,天线是固定位于坐标系原点。目标初始坐标为 ( 7000 , 5000 , 0 ) (7000,5000,0) (7000,5000,0),移动速度恒定,为 ( − 15 , − 10 , 0 ) (-15,-10,0) (−15,−10,0)。
%天线平台
antennaplatform = phased.Platform('InitialPosition',[0;0;0],'Velocity',[0;0;0]);
%目标平台
targetplatform = phased.Platform('InitialPosition',[7000; 5000; 0],...
'Velocity',[-15;-10;0]);
用
rangeangle
函数来确定目标和天线之间的距离和角度:
[tgtrng,tgtang] = rangeangle(targetplatform.InitialPosition,...
antennaplatform.InitialPosition);
5 发射机模型
用
phased.Transmitter
来设定发射机模型的各项参数。脉冲峰值功率是一个关键的参数。假定系统所需的发现概率为0.9,最大虚警概率为 1 0 − 6 10^{-6} 10−6。接收机对10个回波脉冲做非相关能量累积处理。用albersheim方程来确定所需的信噪比,然后可以确定所需峰值功率。
Pd = 0.9;
Pfa = 1e-6;
numpulses = 10;
SNR = albersheim(Pd,Pfa,10);
所需的信噪比大概为5dB。假设雷达对此目标的探测距离要达到15km,天线的增益为20dB。用
radareqpow
函数来计算所需要的脉冲峰值功率。
maxrange = 1.5e4;
lambda = physconst('LightSpeed')/4e9;
tau = waveform.PulseWidth;
Pt = radareqpow(lambda,maxrange,SNR,tau,'RCS',0.5,'Gain',20);
所需要的峰值功率大约为 45 k W 45kW 45kW。保险起见,用 50 k W 50kW 50kW峰值功率对发射机进行建模。保持波形的相位恒定,需要设置
CoherentOnTransmit
属性为 t r u e true true。此雷达为单基雷达,需要设置
InUseOutputPort
属性为 t r u e true true。
transmitter = phased.Transmitter('PeakPower',50e3,'Gain',20,'LossFactor',0,...
'InUseOutputPort',true,'CoherentOnTransmit',true);
6 信号的发射和接收模型
用
phased.Radiator
对信号的发射进行建模。用
phased.Collector
对窄带信号的接收进行建模。用
phased.WidebandCollector
对宽带信号的接收进行建模。
本例中,信号为窄带信号。频率为4GHz。在
Sensor
属性中用上面已经设置过的天线进行设置。在
phased.Collector
对象中,设置
Wavefront
属性为 P l a n e Plane Plane,表示入射的回波为平面波(plane wave)。
radiator = phased.Radiator('Sensor',antenna,...
'PropagationSpeed',physconst('LightSpeed'),'OperatingFrequency',4e9);
collector = phased.Collector('Sensor',antenna,...
'PropagationSpeed',physconst('LightSpeed'),'Wavefront','Plane',...
'OperatingFrequency',4e9);
7 接收机模型
用
phased.ReceiverPreamp
对接收机进行建模。要对接收机的噪声系数(noise figure)和参考温度(reference temperature)进行设置,这是导致系统内部噪声的关键参数。在此例中,将噪声系数设置为 2 d B 2dB 2dB,将参考温度设置为290 kelvin。将随机数生成器的seed设置成固定值,得到一个可重复的结果(reproducible results)。
receiver = phased.ReceiverPreamp('Gain',20,'NoiseFigure',2,...
'ReferenceTemperature',290,'SampleRate',1e6,...
'EnableInputPort',true,'SeedSource','Property','Seed',1e3);
8 传输模型
用
phased.FreeSpace
来对传输模型进行建模。可以通过对
TwoWayPropagation
属性进行设置表示单一路径(one-way)或是双路径(two-propagation)。本例中,这个属性设置为 f a l s e false false,表明为单一路径。
channel = phased.FreeSpace(...
'PropagationSpeed',physconst('LightSpeed'),...
'OperatingFrequency',4e9,'TwoWayPropagation',false,...
'SampleRate',1e6);
9 基本雷达模型的实现
对以上模块都完成参数设置后,开始生成脉冲,向目标发射,接收目标回波。
以下代码为主仿真循环做准备。脉冲之间的时间步长:
T = 1/waveform.PRF;
% Get antenna position
txpos = antennaplatform.InitialPosition;
% Allocate array for received echoes
rxsig = zeros(waveform.SampleRate*T,numpulses);
以下代码完成主要的仿真循环:
for n = 1:numpulses
% Update the target position
[tgtpos,tgtvel] = targetplatform(T);
% Get the range and angle to the target
[tgtrng,tgtang] = rangeangle(tgtpos,txpos);
% Generate the pulse
sig = waveform();
% Transmit the pulse. Output transmitter status
[sig,txstatus] = transmitter(sig);
% Radiate the pulse toward the target
sig = radiator(sig,tgtang);
% Propagate the pulse to the target in free space
sig = channel(sig,txpos,tgtpos,[0;0;0],tgtvel);
% Reflect the pulse off the target
sig = target(sig);
% Propagate the echo to the antenna in free space
sig = channel(sig,tgtpos,txpos,tgtvel,[0;0;0]);
% Collect the echo from the incident angle at the antenna
sig = collector(sig,tgtang);
% Receive the echo at the antenna when not transmitting
rxsig(:,n) = receiver(sig,~txstatus);
end
可以看到,完成一次循环需要10个步骤:
- 更新目标的位置和速度;
- 获取当前目标的距离和角度;
- 生成脉冲;
- 脉冲过发射机;
- 将脉冲转换成电磁波向目标辐射出去;
- 脉冲在自由空间传输;
- 目标将脉冲反射;
- 回波脉冲在自由空间中传输;
- 将入射到天线的电磁波进行转换;
- 在发射机不工作的时候将信号接收,进行处理。
最后,将接收到的信号做非相关能量累计处理,绘制结果图。
%Pulse integration
rxsig = pulsint(rxsig,'noncoherent');
%时间轴变量
t = unigrid(0,1/receiver.SampleRate,T,'[)');
rangegates = (physconst('LightSpeed')*t)/2;
plot(rangegates/1e3,rxsig)
hold on
xlabel('range (km)')
ylabel('Power');
ylim = get(gca,'YLim');
plot([tgtrng/1e3,tgtrng/1e3],[0 ylim(2)],'r')
hold off