SAR raw signal simulation from satellite with Radar Toolbox

18 visualizzazioni (ultimi 30 giorni)
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

Risposte (0)

Categorie

Scopri di più su Radar and EW Systems in Help Center e File Exchange

Prodotti


Release

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by