SAR raw signal simulation from satellite with Radar Toolbox

8 views (last 30 days)
Hi, I am trying to use the Radar Toolbox for SAR raw data simulation from satellite. I first copied the example from the Matlab tutorial https://es.mathworks.com/help/radar/ug/stripmap-synthetic-aperture-radar-sar-image-formation.html#SyntheticApertureRadarImageFormationExample-4
Particularizing it for the satellite case (697 km altitude) these is the input data I use. I want to simulate raw data first for point targets but ideally I would like to do it for a homogeneous distributed target (e.g. sea, rainforest, etc...) but I don't know how.
Note that truncrangesamples is very high, because the target to signal range is driven by the satellite altitude.
c = physconst('LightSpeed');
fc = 5.405e9;
rangeResolution = 5;
crossRangeResolution = 5;
bw = 56.5e6;
prf = 1713;
aperture = 12;
tpd = 1/prf*0.09;
fs = 62.15e6;
fs = round(fs/prf)*prf;
waveform = phased.LinearFMWaveform('SampleRate',fs, 'PulseWidth', tpd, 'PRF', prf,'SweepBandwidth', bw);
speed = 7.59e3;
flightDuration = 1;
radarPlatform = phased.Platform('InitialPosition', [0;697e3;0], 'Velocity', [speed;0;0]);
slowTime = 1/prf;
numpulses = flightDuration/slowTime +1;
maxRange = 800e3;
truncrangesamples = ceil((2*maxRange/c)*fs);
fastTime = (0:1/fs:(truncrangesamples-1)/fs);
%Rc = 1000; %%%%%%%%%%% Set the reference range for the cross-range processing.
antenna = phased.CosineAntennaElement('FrequencyRange', [5.4e9 5.5e9]);
antennaGain = aperture2gain(aperture,c/fc);
transmitter = phased.Transmitter('PeakPower', 4368, 'Gain', antennaGain);
radiator = phased.Radiator('Sensor', antenna,'OperatingFrequency', fc, 'PropagationSpeed', c);
collector = phased.Collector('Sensor', antenna, 'PropagationSpeed', c,'OperatingFrequency', fc);
receiver = phased.ReceiverPreamp('SampleRate', fs, 'NoiseFigure', 2);
channel = phased.FreeSpace('PropagationSpeed', c, 'OperatingFrequency', fc,'SampleRate', fs,'TwoWayPropagation', true);
targetpos= [-40e3,0,400e3;0,400e3,0; 40e3,0,400e3]';
targetvel = [0,0,0;0,0,0; 0,0,0]';
target = phased.RadarTarget('OperatingFrequency', fc, 'MeanRCS', [1,1,1]);
pointTargets = phased.Platform('InitialPosition', targetpos,'Velocity',targetvel);
When I run the code I get the problem of truncrangesamples being too large. If I reduce it I only get simulated noise, no signal. Any ideas? Thank you!
refangle = zeros(1,size(targetpos,2));
rxsig = zeros(truncrangesamples,numpulses);
for ii = 1:numpulses
ii
% Update radar platform and target position
[radarpos, radarvel] = radarPlatform(slowTime);
[targetpos,targetvel] = pointTargets(slowTime);
% Get the range and angle to the point targets
[targetRange, targetAngle] = rangeangle(targetpos, radarpos);
% Generate the LFM pulse
sig = waveform();
% Use only the pulse length that will cover the targets.
sig = sig(1:truncrangesamples);
% Transmit the pulse
sig = transmitter(sig);
% Define no tilting of beam in azimuth direction
targetAngle(1,:) = refangle;
% Radiate the pulse towards the targets
sig = radiator(sig, targetAngle);
% Propagate the pulse to the point targets in free space
sig = channel(sig, radarpos, targetpos, radarvel, targetvel);
% Reflect the pulse off the targets
sig = target(sig);
% Collect the reflected pulses at the antenna
sig = collector(sig, targetAngle);
% Receive the signal
rxsig(:,ii) = receiver(sig);
end

Answers (0)

Categories

Find more on Detection, Range and Doppler Estimation in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!