Phased Array System Toolbox
PAST cung cấp các thuật toán và các công cụ cho việc thiết kế, mô phỏng và phân tích hệ thống xử lý tín hiệu dãy đã định pha. Toolbox bao gồm cấc thuật toán để tạo dạng sóng, beamforming, ước lượng hướng đến, phát hiện mục tiêu, và khả năng xử lý thích nghi theo không-thời gian
Với toolbox này, chúng ta có thể thiết kế hệ thống monostatic, bistatic, và multistatic với nhiều dạng khác nhau. Có thể mô hình ở dạng tĩnh hay động
Phased Array Design and Analysis
Waveform Design and Analysis
Transmitter and Receiver Modeling
Target and Environment Modeling
Spatial Signal Processing
Temporal Signal Processing
Space-Time Adaptive Processing
Thiết kế một monostatic pulse radar để ước tính vị trí mục tiêu trong khoảng xác định
Thiết kế hệ thống pulse radar là để phát hiện mục tiêu không dao động có:
Radar cross section 1m2
Khoảng cách từ radar đến mục tiêu 5000m.
Độ phân giải tầm xa là 50m.
Xác suất phát hiện 0.9.
Xác suất báo động sai nhỏ hơn 10-6
Thiết kế xung.
Bộ thu.
Bộ phát.
Vị trí, khoảng tần số làm việc của bộ raditor và bộ collector.
Thiết lập mục tiêu,môi trường truyền.
Ngưỡng phát hiện.
Bộ thay đổi độ lợi theo tầm xa.
Matched Filter.
pd = 0.9; % Probability of detection
pfa = 1e-6; % Probability of false alarm
max_range = 5000; % Maximum unambiguous range
range_res = 50; % Required range resolution
tgt_rcs = 1; % Required target radar cross section
Các thông số cần thiết kế
Dạng sóng : Xung chữ nhật
prop_speed = physconst('LightSpeed'); % Propagation speed pulse_bw = prop_speed/(2*range_res); % Pulse bandwidth pulse_width = 1/pulse_bw; % Pulse width
prf = prop_speed/(2*max_range); % Pulse repetition frequency fs = 2*pulse_bw; % Sampling rate
hwav = phased.RectangularWaveform(...'PulseWidth',1/pulse_bw,... 'PRF',prf,...'SampleRate',fs);
Đặc tính nhiễu ở bộ thu
Giả sử ở bộ thu chỉ có nhiễu nhiệt, băng thông nhiễu được thiết lập giống băng thông tín hiệu, bộ thu có độ lợi là 20dB và hệ số nhiễu 0dB. noise_bw = pulse_bw; hrx = phased.ReceiverPreamp(... 'Gain',20,... 'NoiseBandwidth',noise_bw,... 'NoiseFigure',0,... 'SampleRate',fs,... 'EnableInputPort',true); Thiết lập hệ thống radar
Bộ phát
Công suất đỉnh cần thiết có liên quan đến nhiều yếu tố bao gồm maximum unambiguous range, tỉ số tín hiệu trên nhiễu SNR cần ở bộ thu, và độ rộng xung của dạng sóng
snr_db = [-inf, 0, 3, 10, 13];
rocsnr(snr_db,'SignalType','NonfluctuatingNoncoherent');
Nếu chúng ta chọn để tích hợp 10 xung, đường cong có thể được vẽ ra như sau:
num_pulse_int = 10;
rocsnr([0 3 5],'SignalType','NonfluctuatingNoncoherent',... 'NumPulses',num_pulse_int);
Phương trình Albersheim:
Với , và
snr_min = albersheim(pd, pfa, num_pulse_int)
Kết quả: snr_min = 4.9904
tx_gain = 20; fc = 10e9;
lambda = prop_speed/fc;
peak_power = radareqpow(lambda,max_range,snr_min,pulse_width,... 'RCS',tgt_rcs,'Gain',tx_gain)
Giả sử bộ phát có độ lợi là 20 dB, lập tần số hoạt động đến 10 GHz. Với SNR thu được có thể tính công suất phát đỉnh
Bộ phát
htx = phased.Transmitter(... 'Gain',tx_gain,...
'PeakPower',peak_power,... 'InUseOutputPort',true);
Bộ phát
Công suất nhiễu ở bộ thu được tính:
, trong đó τ là khoảng duration của xung, trong đó k là hằng số Boltzmann, T là nhiệt độ nhiễu.
Phát và thu tín hiệu Thiết lập anten hant = phased.IsotropicAntennaElement(... 'FrequencyRange',[5e9 15e9]); hantplatform = phased.Platform(... 'InitialPosition',[0; 0; 0],... 'Velocity',[0; 0; 0]); hradiator = phased.Radiator(... 'Sensor',hant,... 'OperatingFrequency',fc); hcollector = phased.Collector(... 'Sensor',hant,... 'OperatingFrequency',fc);
Mô phỏng hệ thống
Mục tiêu
htarget{1} = phased.RadarTarget(... 'MeanRCS',1.6,... 'OperatingFrequency',fc); htargetplatform{1} = phased.Platform(...'InitialPosition',[2000.66; 0; 0]);
htarget{2} = phased.RadarTarget(...'MeanRCS',2.2,...'OperatingFrequency',fc); htargetplatform{2} = phased.Platform(...'InitialPosition',[3532.63; 0; 0]);
htarget{3} = phased.RadarTarget(...'MeanRCS',1.05,...'OperatingFrequency',fc); htargetplatform{3} = phased.Platform(...'InitialPosition',[3845.04; 0; 0]);
Môi trường truyền htargetchannel{1} = phased.FreeSpace(... 'SampleRate',fs,... 'TwoWayPropagation',true,... 'OperatingFrequency',fc); htargetchannel{2} = phased.FreeSpace(... 'SampleRate',fs,... 'TwoWayPropagation',true,... 'OperatingFrequency',fc); htargetchannel{3} = phased.FreeSpace(... 'SampleRate',fs,... 'TwoWayPropagation',true,... 'OperatingFrequency',fc);
Sự tổng hợp tín hiệu
fast_time_grid = unigrid(0,1/fs,1/prf,'[)'); slow_time_grid = (0:num_pulse_int-1)/prf hrx.SeedSource = 'Property';
hrx.Seed = 2007;
rx_pulses = zeros(numel(fast_time_grid),num_pulse_int); % pre-allocate : tạo ma trận zero prt/Ts cột, num_pulse_int hàng
for m = 1:num_pulse_int
ant_pos = step(hantplatform,1/prf); % Update antenna position x = step(hwav); % Generate pulse
[s, tx_status] = step(htx,x); % Transmit pulse for n = 3:-1:1 % For each target tgt_pos(:,n) = step(...
htargetplatform{n},1/prf); % Update target position
[tgt_rng(n), tgt_ang(:,n)] = rangeangle(...
tgt_pos(:,n), ant_pos); % Calculate range/angle
tsig(:,n) = step(hradiator,... % Radiate toward target s,tgt_ang(:,n));
tsig(:,n) = step(htargetchannel{n},...
tsig(:,n),ant_pos,tgt_pos(:,n)); % Propagate pulse rsig(:,n) = step(htarget{n},tsig(:,n)); % Reflect off target end
rsig = step(hcollector,rsig,tgt_ang); % Collect all echoes rx_pulses(:,m) = step(hrx,... % Receive signal and form rsig,~(tx_status>0)); % data matrix
Ngưỡng phát hiện
Trong đó σ là phương sai của nhiễu Gauss, trắng. N là số xung kết hợp sử dụng.
� là hàm gamma
npower = noisepow(noise_bw,hrx.NoiseFigure,hrx.ReferenceTemperature); threshold = npower * db2pow(npwgnthresh(pfa,num_pulse_int,'noncoherent'));
Kết quả
num_pulse_plot = 2;
rangedemoplotpulse(rx_pulses,threshold,...
Match Filter
matchingcoeff = getMatchedFilter(hwav); hmf = phased.MatchedFilter(...
'Coefficients',matchingcoeff,... 'GainOutputPort',true);
[rx_pulses, mfgain] = step(hmf,rx_pulses);
matchingdelay = size(matchingcoeff,1)-1;
rx_pulses = buffer(rx_pulses(matchingdelay+1:end),size(rx_pulses,1));
threshold = threshold * db2pow(mfgain);
Độ lợi thay đổi theo thời gian range_gates = prop_speed*fast_time_grid/2; htvg = phased.TimeVaryingGain(... 'RangeLoss',2*fspl(range_gates,lambda),... 'ReferenceLoss',2*fspl(max_range,lambda)); rx_pulses = step(htvg,rx_pulses);
Sự mất mát trong không gian tự do có thể tính theo công thức sau:
rangedemoplotpulse(rx_pulses,threshold,...
Noncoherent Integration
rx_pulses = pulsint(rx_pulses,'noncoherent');
[~,range_detect] = findpeaks(rx_pulses,'MinPeakHeight',sqrt(threshold));
true_range = round(tgt_rng)
range_estimates = round(range_gates(range_detect))
Ước lượng vị trí mục tiêu
true_range = 2001 3533 3845
range_estimates = 2025 3550 3850