当前位置:网站首页>Matlab simulation of radar imaging 3 - multi-target detection
Matlab simulation of radar imaging 3 - multi-target detection
2022-07-28 06:27:00 【I have two candies】
List of articles
Pulse compression can narrow the signal , So that two signals with overlap in the time domain can be separated , Use pulse compression and windowing to suppress side lobes , It can realize multi-target detection .
1. Echo of multi-target signal
Use matlab when , If you can use matrix operation, try not to for loop , Because matrix operation can speed up the operation .
When there are multiple targets in a certain direction within the radar detection range , Look, you can use each row of the matrix to store the echo signal of each target , The echo signals of all lines are superimposed to get the actually received echo .
Next, write a pulse compression function to detect multiple targets
1.1 Parameter setting
First set the pulse width 、 bandwidth 、 Maximum and minimum distance of detection 、 Point the distance of the target ( vector ) And point target RCS. Then calculate some variable values that need to be used :Twid, Fs,Ts and Nwid
function LFM_radar(T, B, Rmin, Rmax, R, RCS)
% inputs:
% T: pulse duration
% B: chirp frequency modulation bandwidth
% Rmin, Rmax: range bin
% R: position of ideal point targets
% RCS: radar cross section of ideal targets
clear; clc;
set(0,'defaultfigurecolor', 'w');
%% default parameters
if nargin == 0
T = 10e-6;
B = 30e6;
Rmin = 10000;
Rmax = 15000;
R = [11000, 12000, 12005, 13000, 13020];
RCS = [1 1 1 1 1];
end
%% parameters
C = 3e8; % speed of light
K = B/T; % chirp slope
Rwid = Rmax - Rmin; % recieved window in meter
Twid = 2 * Rwid / C; % recieced window in second
Fs = 5 * B; % sampling frequency
Ts = 1 / Fs; % sampling spacing
Nwid = ceil(Twid / Ts); % recieved window in sampling number
1.2 Generate echo signal
%% generate echo wave
t = linspace(2*Rmin/C, 2*Rmax/C, Nwid); % received window
% open window at 2Rmin/C
% close window at 2Rmax/C
M = length(R); % number of targets
delay = 2*R/C; % delay of point targets
td = ones(M, 1)*t - delay'*ones(1, Nwid); % time -tau of targets
Srt = RCS*(exp(1i*pi*K*td.^2).*(abs(td)<T/2)); % echo from all targets
The second line of code generates a 2 × R m i n c \frac{2\times R_{min}}{c} c2×Rmin To 2 × R m a x c \frac{2\times R_{max}}{c} c2×Rmax Time series of ( Observation window ), The interval is T S T_S TS, The size is 1 × N w i d 1 \times N_{wid} 1×Nwid
In the eighth line of code ,ones(M, 1)*t Get one M × N w i d M \times N_{wid} M×Nwid Matrix , Each line represents a time series ,delay'*ones(1, Nwid) For time delay , Therefore, each column in the eighth row is equivalent to t − d e l a y i t - delay_i t−delayi Time series of
The mathematical expression of each echo signal is :
t d i = t − 2 × R i c S r i ( t ) = S ( t d i ) ∗ R e c t ( t d i T ) td_i = t-2 \times \frac{R_i}{c}\\ S_{r_i}(t) = S(td_i) * Rect(\frac{td_i}{T}) tdi=t−2×cRiSri(t)=S(tdi)∗Rect(Ttdi)
among , 2 × R i c 2 \times \frac{R_i}{c} 2×cRi For the first time i The time delay caused by the distance between two targets , This delay will be reflected in the delay of the echo signal , S r i ( t ) S_{r_i}(t) Sri(t) Multiply R e c t ( t d i T ) Rect(\frac{td_i}{T}) Rect(Ttdi) The reason is that the transmitted signal is a pulse signal , One pulse width at a time
The last line of code is to calculate the echo signal , According to the above analysis, we can understand the last line of code ( In the last line , The first i Line multiplied by No i A goal of RCS After the sum , Matrix operations ), As shown in the figure below :

2. Pulse compression
Use frequency domain correlation to calculate the echo signal S r t S_{rt} Srt And launch S t S_t St Do correlation operation to calculate matched filter ( It can also be used to convolute the inverted conjugate of the transmitted signal with the echo ):
Sot = fftshift(ifft(fft(Srt, Nfft).*conj(fft(St, Nfft)))); % corr
Sot = conv(Srt, conj(fliplr(St))); % conv
2.1 Without windows
%% Pulse compression radar using FFT and IFFT
Nfft = 2^nextpow2(Nwid + Nwid-1); % number needed to compute linear
% convolve length = Nwid + Nwid-1
Nchirp = ceil(T / Ts); % pulse duration in number
t0 = linspace(-T/2, T/2, Nchirp); % discrete time of T
St = exp(1i*pi*K*t0.^2); % transmit signal
Sot = fftshift(ifft(fft(Srt, Nfft).*conj(fft(St, Nfft))));
N0 = Nfft/2 - Nchirp/2; % valid series of fft in positive axis
Z = abs(Sot(N0 : N0+Nwid-1)); % FFT series
max_Z = max(Z);
Z = Z / max(Z);
Z = 20*log10(Z + 1e-6);
notes : The penultimate line of code is not understood , If there are big guys understand, you can leave a message !
2.2 Add hann window
Will send a signal S t S_t St Multiply hann window , Then do correlation calculation with the echo signal , Realize windowed pulse compression ( You can also calculate the transmission signal and multiply it by the window function first , seek S t × w i n S_t \times win St×win Conjugate flip of , Get the impulse response function of matched filter , Convolute the impulse response function with the echo )
%% hann window
St = exp(1i*pi*K*t0.^2); % transmit signal
win = hann(Nchirp)';
St_w = St.*win;
Sot = fftshift(ifft(fft(Srt, Nfft).*conj(fft(St_w, Nfft))));
N0 = Nfft/2 - Nchirp/2; % valid series of fft in positive axis
Z_w = abs(Sot(N0 : N0+Nwid-1)); % FFT series
Z_w = Z_w / max_Z;
Z_w = 20*log10(Z_w + 1e-6);
3. The plot
%% Figures
figure(2)
subplot(3, 1, 1)
plot(t*1e6, real(Srt), 'black', 'LineWidth', 0.8); axis tight;
xlabel('(1) Time in \itu sec');
ylabel('Amplitude');
title('Radar echo without compression');
subplot(3, 1, 2)
plot(t*C/2, Z, 'black', 'LineWidth', 0.8)
axis([10000, 15000, -100, 0])
xlabel('(2) Range in meters');
ylabel('Amplitude in dB');
title('Radar echo after compression');
subplot(3, 1, 3)
plot(t*C/2, Z_w, 'black', 'LineWidth', 0.8)
axis([10000, 15000, -100, 0])
xlabel('(3) Range in meters');
ylabel('Amplitude in dB');
title('Radar echo after compression (windowed)');
The output is as follows :
The whole program :
function LFM_radar(T, B, Rmin, Rmax, R, RCS)
% inputs:
% T: pulse duration
% B: chirp frequency modulation bandwidth
% Rmin, Rmax: range bin
% R: position of ideal point targets
% RCS: radar cross section of ideal targets
clear; clc;
set(0,'defaultfigurecolor', 'w');
%% default parameters
if nargin == 0
T = 10e-6;
B = 30e6;
Rmin = 10000;
Rmax = 15000;
R = [11000, 12000, 12005, 13000, 13020];
RCS = [1 1 1 1 1];
end
%% parameters
C = 3e8; % speed of light
K = B/T; % chirp slope
Rwid = Rmax - Rmin; % recieved window in meter
Twid = 2 * Rwid / C; % recieced window in second
Fs = 5 * B; % sampling frequency
Ts = 1 / Fs; % sampling spacing
Nwid = ceil(Twid / Ts); % recieved window in sampling number
%% generate echo wave
t = linspace(2*Rmin/C, 2*Rmax/C, Nwid); % received window
% open window at 2Rmin/C
% close window at 2Rmax/C
M = length(R); % number of targets
delay = 2*R/C; % delay of point targets
td = ones(M, 1)*t - delay'*ones(1, Nwid); % time -tau of targets
Srt = RCS*(exp(1i*pi*K*td.^2).*(abs(td)<T/2)); % echo from all targets
%% Pulse compression radar using FFT and IFFT
Nfft = 2^nextpow2(Nwid + Nwid-1); % number needed to compute linear
% convolve length = Nwid + Nwid-1
Srw = fft(Srt, Nfft); % FFT of echo wave
Nchirp = ceil(T / Ts); % pulse duration in number
t0 = linspace(-T/2, T/2, Nchirp); % discrete time of T
St = exp(1i*pi*K*t0.^2); % transmit signal
%% not windowed
Sw = fft(St, Nfft);
Sot = fftshift(ifft(Srw.*conj(Sw))); % convolve using FFT
% Sot = fftshift(ifft(fft(Srt, Nfft).*conj(fft(St, Nfft)))); % convolve using FFT
N0 = Nfft/2 - Nchirp/2; % valid series of fft in positive axis
Z = abs(Sot(N0 : N0+Nwid-1)); % FFT series
max_Z = max(Z);
Z = Z / max(Z);
Z = 20*log10(Z + 1e-6);
%% hann window
St = exp(1i*pi*K*t0.^2); % transmit signal
win = hann(Nchirp)';
St_w = St.*win;
% corelation in frequency domain
% fftshift(ifft(fft(X).*conj(fft(Y))))
Sot = fftshift(ifft(fft(Srt, Nfft).*conj(fft(St_w, Nfft))));
% different
sum(abs(conj(fft(St_w, Nfft))-fft(conj(fliplr(St_w)), Nfft)))
% Sot = fftshift(ifft(fft(Srt, Nfft).*fft(conj(fliplr(St_w)), Nfft))); bad
N0 = Nfft/2 - Nchirp/2; % valid series of fft in positive axis
Z_w = abs(Sot(N0 : N0+Nwid-1)); % FFT series
Z_w = Z_w / max_Z;
Z_w = 20*log10(Z_w + 1e-6);
%% Figures
figure(2)
subplot(3, 1, 1)
plot(t*1e6, real(Srt), 'black', 'LineWidth', 0.8); axis tight;
xlabel('(1) Time in \itu sec');
ylabel('Amplitude');
title('Radar echo without compression');
subplot(3, 1, 2)
plot(t*C/2, Z, 'black', 'LineWidth', 0.8)
axis([10000, 15000, -100, 0])
xlabel('(2) Range in meters');
ylabel('Amplitude in dB');
title('Radar echo after compression');
subplot(3, 1, 3)
plot(t*C/2, Z_w, 'black', 'LineWidth', 0.8)
axis([10000, 15000, -100, 0])
xlabel('(3) Range in meters');
ylabel('Amplitude in dB');
title('Radar echo after compression (windowed)');
边栏推荐
- Esxi on ARM v1.2 (updated in November 2020)
- How to view the transfer function of the module directly built by Simulink
- CLIP Learning Transferable Visual Models From Natural Language Supervision
- PyTorch 学习笔记 4 —— 自动计算梯度下降 AUTOGRAD
- In asp Usage of cookies in. Net
- Trouble encountered in cable testing -- a case study of a manufacturer?
- 论福禄克DTX-1800如何测试CAT7网线?
- Why should fluke dsx2-5000 network cable tester be calibrated once a year?
- Mae mask self encoding is scalable learning
- Beta distribution (probability of probability)
猜你喜欢

雷达成像 Matlab 仿真 2 —— 脉冲压缩与加窗

(PHP graduation project) based on PHP student daily behavior management system access

毕业论文 | 文献综述应该怎么写

Surge impact immunity experiment (surge) -emc series Hardware Design Notes 6

雷达成像 Matlab 仿真 3 —— 多目标检测

How to calibrate dsx2-8000? Calibration process?

set_clock_groups

线缆测试中遇到苦恼---某厂商案例分析?

Detailed explanation of creepage distance and electrical clearance

雷达成像 Matlab 仿真 1 —— LFM信号及其频谱
随机推荐
权重衰减 weight decay
ICC2(三)Clock Tree Synthesis
mysql join技巧
When to replace jack socket for dsx-pc6 jumper module?
(PHP graduation design) obtained based on PHP fruit sales store management system
Convert data in grilview into datatable
Synopsys Multivoltage Flow
Terminal resistance detailed signal complete series hardware learning notes 7
set_case_analysis
线缆测试中遇到苦恼---某厂商案例分析?
福禄克DSX2-5000 网络线缆测试仪为什么每年都要校准一次?
ConNeXt
Distinguishing PCB quality by color is a joke in itself
How to pop up the message dialog box
Best practices to ensure successful deployment of Poe devices
雷达成像 Matlab 仿真 4 —— 距离分辨率分析
初学者进行传感器选型
Analysis of MOSFET damage at the moment of power failure of isolated power supply
ASP. Net read database bound to treeview recursive mode
IMS-FACNN(Improved Multi-Scale Convolution Neural Network integrated with a Feature Attention Mecha