FMCW Radar Processing for SAR

45 views (last 30 days)
Hariharan MK
Hariharan MK on 7 Jun 2023
Answered: Abhimenyu on 27 Sep 2023
I have written some code to simulate a FMCW radar that is flying past. I have two targets in my scene which are found in the center of the aperture. I am working with a dechirped system hence, the radar equation is simplified. Although I am supposed to have two targets in the scene, when I perfrom the range FFT I only see a single target. I am not sure what I could be doing wrong. Any suggestion would be helpful. Thank you!
% FMCW Radar Simulation with Point Targets
clear;clc; close all;
% Constants
c = 3e8; % Speed of light (m/s)
Fc = 10e9; % Carrier frequency (Hz)
B = 500e6; % Chirp bandwidth (Hz)
PRF = 1e3; % Pulse Repetition Frequency
Tp = 1e-3; % Pulse length
H = 100; % Height of radar
Ys = 200; % Y center to scene center
radarVel = 10; % Radar Velocity
Y0 = 80; % ground range swath
Xs = 0; % X centers
Rs = sqrt(Ys^2+H^2); % Slant Range to scene Center
pa = 0.5;% azimuth res
pr = c/2/B;% range res
% Derieved Parameters
lamC = c/Fc;
delTh = (lamC)/(2*pa);
L = Rs*delTh/sin(deg2rad(90)); % Synthetic Aperture Length (2.21)
Ta = L/radarVel; % Synthetic Aperture time (2.22)
Naz = round(PRF * Ta /2) * 2; % Number of Azimuth samples (matter of convenience)
PRI = 1/PRF; % Pulse Repetition Interval
Cr=B/PRI; % Chirprate
Rmin = sqrt((Ys-Y0/2)^2 + H^2);
Rmax = sqrt((Ys+Y0/2)^2 + H^2);
Fs = (Cr*2*(Rmax-Rmin)/c) * 2; % Sampling frequency (Hz)
ts = 1/Fs;
Nrg=ceil(2*(Rmax)/c/ts - 2*(Rmin)/c/ts); % reuturns a 1
Nrg = 1024; % hardcoded value
ts=(2*Rmax/c-2*Rmin/c)/Nrg;
Fs=1/ts; % new Fs
t = linspace(-Nrg/2, Nrg/2, Nrg)*ts; %demodulated fast time
% Setting up the scene geometry
sceneCenter = [0, Ys, 0];
radarPosc = [0,0,H];% Radar Coords at Aperture center along the path
tSeq = [0:Naz] * PRI;
radarPoss = radarPosc - [radarVel, 0 ,0] * ceil(Naz/2) * PRI; % Radar's Starting Position
radarSeq = zeros(3,length(tSeq)); % x y z positions of radar
radarSeq(1,:) = radarPoss(1) + tSeq * radarVel(1);
radarSeq(2,:) = radarPoss(2) + tSeq * 0;
radarSeq(3,:) = radarPoss(3) + tSeq * 0;
radarSeq = radarSeq';
% Generation of signal
raw = zeros(Naz,Nrg);
ntargets = 2;
targets = [[0,sqrt(Rs^2-H^2)+20,0];[0,sqrt(Rs^2-H^2)-20,0]];
% Loop over each target
for i = 1:Naz
for k = 1:ntargets
% Calculate target range and delay
target_range = norm(radarSeq(i,:)-targets(k,:)); % Target range
tau = 2*target_range/c; % Target delay
% Add received signal to total received signal
raw(i, :) = raw(i, :) + exp(1j*2*pi*(Fc*tau + Cr*tau*t - 0.5*Cr*tau*tau));
end
end
figure;imagesc(abs(fftshift(fft(raw,[],2)))); % Range FFT -> range
  1 Comment
silvia cano
silvia cano on 31 Jul 2023
hi can you explain me . your code ? i want to made a imege from FMCW radar

Sign in to comment.

Answers (1)

Abhimenyu
Abhimenyu on 27 Sep 2023
Hi Hariharan,
I understand that you are unable to see two targets after performing the range FFT. The code provided by you is correct and detects two objects, but the range resolution must be increased to view them using FFT. To improve range resolution in the above code, you can decrease the pulse length Tp or increase the chirp bandwidth “B. Both parameters affect the range resolution of the radar system.
You can use the following values to see the two targets,
B=5000e8;
Tp=0.1e-3;
However, you can experiment with the above values to get desired FFT response.
I hope this helps!
Thank you,
Abhimenyu.

Products


Release

R2022b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!