SAR raw signal simulation from satellite with Radar Toolbox

조회 수: 18 (최근 30일)
Albert Zurita
Albert Zurita 2022년 6월 27일
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

답변 (0개)

카테고리

Help CenterFile Exchange에서 Radar and EW Systems에 대해 자세히 알아보기

제품


릴리스

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by