Этот пример показов, как смоделировать основанную на прожекторе Радара с синтезированной апертурой (РСА) систему с помощью линейной FM (LFM) волны. В случае режима косоглазия платформа РСА косится либо так, чтобы смотреть вперед, либо назад на определенный угол от широкой стороны в зависимости от потребности. Режим косоглазия помогает в создании изображений областей, лежащих перед текущим местоположением радиолокационной платформы или к местоположениям изображений, лежащим позади местоположения платформы для интерферометрических приложений. Задача в режиме косоглазия выше из-за азимутального соединения области значений. Поскольку разрешение РСА зависит от строения сигнала и антенны, разрешение может быть намного выше, чем для систем визуальной визуализации. Используя режим прожектора, этот пример выполняет алгоритм миграции области значений [1,3], чтобы отобразить стационарные цели, лежащие перед местоположением платформы РСА. Линейный FM сигнал предлагает преимущество продукта с большой временной шириной полосы при значительно меньшей степени передачи, что делает его подходящим для использования в воздушных системах. Для получения дополнительной информации о терминологии, используемой в этом примере, смотрите Stripmap Synthetic Aperture Radar (SAR) Image Formation.
Рассмотрим воздушный РСА, работающий в C-диапазоне с несущей частотой 4 ГГц и пропускной способностью сигнала 50 МГц. Эта полоса пропускания дает разрешение в области значений 3 метра. Радиолокационная система собирает данные под углом косоглазия 33 степеней от широкой стороны, как показано на рисунке выше. Задержка соответствует в целом области значений наклона между целью и платформой. Для РСА системы наклонная область значений будет изменяться с течением времени, когда платформа пройдет путь, ортогональный направлению луча антенны. Этот раздел ниже посвящен определению параметров для формы волны передачи. Шумовая полоса LFM может быть решена на основе желаемого разрешения области значений.
c = physconst('LightSpeed');
Установите центральную частоту РСА.
fc = 4e9;% Hz
Установите требуемую область значений и разрешение в перекрестной области значений от 3 метров.
rangeResolution = 3;% meters crossRangeResolution = 3;% meters
Шумовая полоса сигнала является параметром, полученным из желаемого разрешения области значений.
bw = c/(2*rangeResolution); prf = 1000;% Hz aperture = 4;% sq. meters tpd = 3*10^-6; % sec fs = 120*10^6; % Hz
Сконфигурируйте сигнал LFM радара.
waveform = phased.LinearFMWaveform('SampleRate',fs, 'PulseWidth', tpd, 'PRF', prf,... 'SweepBandwidth', bw);
Предположим, что скорость самолета составляет 100 м/с при длительности полета 4 секунды.
speed = 100;% m/s flightDuration = 4;% sec radarPlatform = phased.Platform('InitialPosition', [0;-600;500], 'Velocity', [0; speed; 0]); slowTime = 1/prf; numpulses = flightDuration/slowTime +1; eta1 = linspace(0,flightDuration ,numpulses)'; maxRange = 2500; truncrangesamples = ceil((2*maxRange/c)*fs); fastTime = (0:1/fs:(truncrangesamples-1)/fs); % Set the reference range for the cross-range processing. Rc = 1e3;% meters
Сконфигурируйте передатчик и приемник РСА. Антенна выглядит в широком направлении ортогонально направлению рейса.
antenna = phased.CosineAntennaElement('FrequencyRange', [1e9 6e9]); antennaGain = aperture2gain(aperture,c/fc); transmitter = phased.Transmitter('PeakPower', 1e3, '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', 30);
Сконфигурируйте канал распространения.
channel = phased.FreeSpace('PropagationSpeed', c, 'OperatingFrequency', fc,'SampleRate', fs,... 'TwoWayPropagation', true);
В этом примере две статические точки назначения сконфигурированы в местоположениях, указанных ниже. Вся сцена, показанная далее в симуляции, находится перед платформой. Набор данных заканчивается до того, как воздушная платформа будет в курсе целевого местоположения. Все цели имеют среднее значение RCS 1 метр в квадрате.
targetpos= [900,0,0;1000,-30,0]'; targetvel = [0,0,0;0,0,0]';
Вычисление угла косоглазия зависит от угла тангажа и центра целевой сцены, которая в этом случае находится почти на 950 метрах.
squintangle = atand(600/950); target = phased.RadarTarget('OperatingFrequency', fc, 'MeanRCS', [1,1]); pointTargets = phased.Platform('InitialPosition', targetpos,'Velocity',targetvel); % The figure below describes the ground truth based on the target % locations. figure(1); h = axes;plot(targetpos(2,1),targetpos(1,1),'*b');hold all;plot(targetpos(2,2),targetpos(1,2),'*r');hold off; set(h,'Ydir','reverse');xlim([-50 10]);ylim([800 1200]); title('Ground Truth');ylabel('Range');xlabel('Cross-Range');
В следующем разделе описывается работа системы на основе вышеописанного строения. В частности, в приведенном ниже разделе показано, как выполняется набор данных для платформы РСА. Когда платформа перемещается в поперечном направлении, импульсы передаются и принимаются в направлениях, заданных углом косоглазия относительно угла тангажа. Набор импульсов дает историю фаз целей, лежащих в области освещения, когда платформа перемещается. Чем больше цель лежит в области освещения, тем лучше разрешение перекрестной области значений для всего изображения, потому что процесс фокусировки области значений и перекрестной области значений обобщен для всей сцены.
rxsig = zeros(truncrangesamples,numpulses); for ii = 1:numpulses % 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); % 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 kc = (2*pi*fc)/c; % Compensate for the doppler due to the squint angle rxsig=rxsig.*exp(-1i.*2*(kc)*sin(deg2rad(squintangle))*repmat(speed*eta1,1,truncrangesamples)).';
Визуализируйте принятый сигнал.
Теперь принятый сигнал может быть визуализирован как набор нескольких импульсов, переданных в направлении перекрестной области значений. Графики показывают действительную часть сигнала для двух целей. Щебеты появляются наклоненными из-за угла косоглазия антенны.
imagesc(real(rxsig));title('SAR Raw Data') xlabel('Cross-Range Samples') ylabel('Range Samples')
Выполните сжатие области значений.
Сжатие области значений поможет достичь желаемого разрешения области значений для полосы пропускания 50 МГц.
pulseCompression = phased.RangeResponse('RangeMethod', 'Matched filter', 'PropagationSpeed', c, 'SampleRate', fs); matchingCoeff = getMatchedFilter(waveform); [cdata, rnggrid] = pulseCompression(rxsig, matchingCoeff);
Рисунок ниже показывает ответ после достижения сжатия области значений на принимаемом сигнале. Истории фаз двух целей хорошо видны по направлению перекрестной области значений, и была достигнута фокусировка области значений.
imagesc(real(cdata(800:1100,:)));title('SAR Range Compressed Data') xlabel('Cross-Range Samples') ylabel('Range Samples')
Сжатие азимута
Существует несколько методов обработки данных перекрестной области значений и получения окончательного изображения из необработанных данных РСА после достижения сжатия области значений. По существу, сжатие области значений помогает достичь разрешения в быстром направлении или направлении области значений, а разрешение в направлении перекрестной области значений достигается путем сжатия азимута или перекрестной области значений. Алгоритм миграции области значений для случая косоглазия был продемонстрирован в этом примере. Фокусировка азимута должна учитывать косоглазие, вызванное наклоном антенны.
rma_processed = helperSquintRangeMigration(cdata,fastTime,fc,fs,prf,speed,numpulses,c,Rc,squintangle);
Визуализируйте окончательное изображение РСА.
Постройте график сфокусированного изображения РСА с помощью алгоритма миграции области значений. Показан только раздел изображения, сформированного через алгоритм миграции области значений, чтобы точно указать местоположение целей. Миграция области значений, показанная на [1], [2] и [3], обеспечивает теоретическое разрешение в кросс-дорожке, а также вдоль дорожки.
figure(2); imagesc(abs(rma_processed(2300:3600,1100:1400).')); title('SAR Data focused using Range Migration algorithm ') xlabel('Cross-Range Samples') ylabel('Range Samples')
В этом примере показано, как симулировать и разработать режим Squint Spotlight SAR обработки, используя сигнал LFM в сценарии набора данных в воздухе. Пример также демонстрирует генерацию изображения из принятого сигнала через модифицированный алгоритм миграции области значений, чтобы обработать эффект из-за косоглазия.
Cafforio, C., Prati, C. and Rocca, F., 1991. Данные РСА с учетом методов сейсмической миграции. Сделки ИЭЭЭ по аэрокосмическим и электронным системам, 27 (2), стр. 194-207.
Сумех, М., 1999. Радар с синтезированной апертурой Обработку Сигнала с помощью алгоритмов MATLAB. John Wiley & Sons, Inc.
Stolt, R.H., Migration by преобразование Фурье technologies, Geophysics, 1978, 43, pp. 23-48
Алгоритм миграции областей значений
function azcompresseddata = helperSquintRangeMigration(sigData,fastTime,fc,fs,prf,speed,numPulses,c,Rc,squintangle)
Эта функция демонстрирует алгоритм миграции области значений для визуализации бокового радара с синтезированной апертурой. Импульсные данные о сжатой синтетической апертуре рассматриваются в этом алгоритме.
Установите область значений частотного диапазона.
frequencyRange = linspace(fc-fs/2,fc+fs/2,length(fastTime)); krange = 2*(2*pi*frequencyRange)/c;
Установите перекрестную область значений.
kaz = 2*pi*linspace(-prf/2,prf/2,numPulses)./speed;
Сгенерируйте матрицу сигналов перекрестной области значений, чтобы соответствовать размеру принимаемого двумерного сигнала РСА
kc = 2*pi*fc/3e8; kazimuth = kaz.'; kus=2*(kc)*sin(deg2rad(squintangle)); kx = krange.^2-(kazimuth+kus).^2;
Число волн было изменено, чтобы приспособить сдвиг из-за косоглазия и достичь фокусировки азимута.
thetaRc = deg2rad(squintangle); kx = sqrt(kx.*(kx > 0)); kFinal = exp(1i*(kx.*cos(thetaRc)+(kazimuth).*sin(thetaRc)).*Rc); kfin = kx.*cos(thetaRc)+(kazimuth+kus).*sin(thetaRc);
Выполните двумерное БПФ на сжатом сигнале области значений.
sdata =fftshift(fft(fftshift(fft(sigData,[],1),1),[],2),2);
Выполните массовое сжатие, чтобы получить азимутальное сжатие на ссылку области значений. Выполните фильтрацию 2-D сигнала БПФ с новой перекрестной областью значений волновым числом, чтобы добиться полной фокусировки на ссылку области значений и как побочный продукт, частичной фокусировки целей, не лежащих на ссылку области значений.
fsmPol = (sdata.').*kFinal;
Выполните интерполяцию Stolt, чтобы достичь фокусировки для целей, которые не лежат в ссылку области значений
stoltPol = fsmPol; for i = 1:size((fsmPol),1) stoltPol(i,:) = interp1(kfin(i,:),fsmPol(i,:),krange(1,:)); end stoltPol(isnan(stoltPol)) = 1e-30; azcompresseddata = ifftshift(ifft2(stoltPol),2); end