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
