В этом примере показано, как моделировать систему РЛС с синтетической апертурой (SAR) на основе стриппинг-карты с использованием линейной формы сигнала FM (LFM). САР - это тип бортового радиолокатора бокового обзора, где достижимое разрешение на дальность значительно выше по сравнению с радиолокатором с реальной апертурой. Изображение, генерируемое с использованием SAR, имеет свои собственные преимущества, в основном относящиеся к использованию активного датчика (радара) в отличие от обычных систем формирования изображения, использующих пассивный датчик (камеру), которые полагаются на окружающее освещение для получения изображения. Поскольку используется активный датчик, система обеспечивает всепогодные характеристики независимо, например, от снега, тумана или дождя. Кроме того, настройка системы для работы на различных частотах, таких как L-, S- или C-диапазон, может помочь в анализе различных слоев на земле на основе различной глубины проникновения. Поскольку разрешение SAR зависит от конфигурации сигнала и антенны, разрешение может быть намного выше, чем для систем визуализации на основе зрения. Используя режим стриппинга, этот пример выполняет как алгоритм миграции диапазона [1], так и приближенную форму алгоритма обратной проекции [2] на неподвижные цели изображения. Примерная форма алгоритма обратной проекции выбрана для уменьшенной вычислительной сложности, как указано в [3]. Линейная ЧМ-форма сигнала обеспечивает преимущество продукта с большой временной полосой пропускания при значительно меньшей мощности передачи, что делает его пригодным для использования в воздушных системах.
SAR генерирует двумерное (2-D) изображение. Направление полета называется поперечным или азимутальным направлением. Направление визирования антенны (широкополосное) ортогонально траектории полета и называется поперечным направлением или направлением дальности. Эти два направления обеспечивают основу для размеров, необходимых для формирования изображения, полученного из области в пределах ширины луча антенны в течение длительности окна сбора данных. Направление поперечной дорожки - это направление, в котором передаются импульсы. Это направление обеспечивает наклонную дальность до целей по траектории полета. Затем необходимо обработать энергию, полученную после отражения от целей для каждого импульса (для измерения дальности и разрешения). Направление по поперечному диапазону или азимуту является направлением траектории полета, и для достижения требуемого измерения и разрешения целесообразно обрабатывать совокупность импульсов, принимаемых по всей траектории полета. Правильная фокусировка в обоих направлениях подразумевает успешную генерацию изображения в диапазоне и в поперечном направлении. Требуется, чтобы ширина луча антенны была достаточно широкой, чтобы цель освещалась лучом в течение длительного времени при движении платформы по ее траектории. Это поможет предоставить дополнительную информацию о фазе. Ключевые термины, часто встречающиеся при работе с SAR:
Перекрестная дальность (азимут): этот параметр определяет дальность по траектории полета радиолокационной платформы.
Дальность: этот параметр определяет дальность, ортогональную траектории полета радиолокационной платформы.
Fast-time: этот параметр определяет длительность времени работы каждого импульса.
Slow-time: этот параметр определяет информацию о времени между диапазонами. Медленное время обычно определяет моменты времени, в которые импульсы передаются по траектории полета.

Рассмотрим РЛС SAR, работающую в C-диапазоне с несущей частотой 4 ГГц и полосой пропускания сигнала 50 МГц. Эта полоса пропускания дает разрешение диапазона 3 метра. Радиолокационная система собирает данные, ортогональные направлению движения платформы, как показано на рисунке выше. Принятый сигнал представляет собой задержанную реплику передаваемого сигнала. Задержка в целом соответствует диапазону наклона между целью и платформой. Для системы SAR диапазон наклона будет изменяться во времени, когда платформа пересекает траекторию, ортогональную направлению луча антенны. Этот раздел ниже посвящен определению параметров для формы сигнала передачи. Полоса пропускания развертки LFM может быть определена на основе требуемого разрешения диапазона.
Установите физическую постоянную для скорости света.
c = physconst('LightSpeed');Установите центральную частоту SAR.
fc = 4e9;
Установите требуемый диапазон и разрешение в диапазоне 3 метра.
rangeResolution = 3; crossRangeResolution = 3;
Полоса пропускания сигнала - это параметр, получаемый из требуемого разрешения диапазона.
bw = c/(2*rangeResolution);
В системе SAR PRF имеет двойные последствия. PRF не только определяет максимальный однозначный диапазон, но и служит частотой дискретизации в поперечном направлении. Если PRF является слишком низким для достижения более высокого однозначного диапазона, существуют более длительные импульсы, что приводит к меньшему количеству импульсов в конкретной области. В то же время, если PRF слишком велика, то выборка между диапазонами достигается, но за счет уменьшенного диапазона. Следовательно, PRF должен быть менее чем в два раза больше доплеровской частоты и также должен удовлетворять критериям максимального однозначного диапазона
prf = 1000; aperture = 4; tpd = 3*10^-6; fs = 120*10^6;
Сконфигурируйте сигнал LFM РЛС.
waveform = phased.LinearFMWaveform('SampleRate',fs, 'PulseWidth', tpd, 'PRF', prf,... 'SweepBandwidth', bw);
Предположим, что скорость самолета составляет 100 м/с при продолжительности полета 4 секунды.
speed = 100; flightDuration = 4; radarPlatform = phased.Platform('InitialPosition', [0;-200;500], 'Velocity', [0; speed; 0]); slowTime = 1/prf; numpulses = flightDuration/slowTime +1; 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 = 1000;
Сконфигурируйте передатчик и приемник SAR. Антенна выглядит в широком направлении ортогонально направлению полета.
antenna = phased.CosineAntennaElement('FrequencyRange', [1e9 6e9]); antennaGain = aperture2gain(aperture,c/fc); transmitter = phased.Transmitter('PeakPower', 50e3, '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= [800,0,0;1000,0,0; 1300,0,0]'; 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); % The figure below describes the ground truth based on the target % locations. figure(1);h = axes;plot(targetpos(2,1),targetpos(1,1),'*g');hold all;plot(targetpos(2,2),targetpos(1,2),'*r');hold all;plot(targetpos(2,3),targetpos(1,3),'*b');hold off; set(h,'Ydir','reverse');xlim([-10 10]);ylim([700 1500]); title('Ground Truth');ylabel('Range');xlabel('Cross-Range');

В следующем разделе описывается работа системы на основе вышеописанной конфигурации. В частности, в разделе ниже показано, как выполняется сбор данных для платформы SAR. При движении платформы в поперечном направлении импульсы передаются и принимаются в направлениях, ортогональных траектории полета. Совокупность импульсов дает фазовую историю целей, лежащих в области освещения при движении платформы. Чем длиннее цель находится в области освещения, тем лучше разрешение в поперечном диапазоне для всего изображения, потому что процесс фокусировки в диапазоне и в поперечном диапазоне обобщен для всей сцены.
% Define the broadside angle refangle = zeros(1,size(targetpos,2)); 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); % 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
Визуализация принятого сигнала.
Принятый сигнал теперь может быть визуализирован как совокупность множества импульсов, передаваемых в поперечном направлении. Графики показывают реальную часть сигнала для трех целей. Диапазон и поперечные чирпы можно видеть ясно. Целевые отклики могут рассматриваться как перекрывающиеся, так как длительность импульса сохраняется большей для поддержания средней мощности.
imagesc(real(rxsig));title('SAR Raw Data') xlabel('Cross-Range Samples') ylabel('Range Samples')

Выполните сжатие диапазона.
Каждая строка принятого сигнала, которая содержит всю информацию из каждого импульса, может быть сопоставлена с фильтром, чтобы получить сигнал, сжатый по декомпрессии/диапазону.
pulseCompression = phased.RangeResponse('RangeMethod', 'Matched filter', 'PropagationSpeed', c, 'SampleRate', fs); matchingCoeff = getMatchedFilter(waveform); [cdata, rnggrid] = pulseCompression(rxsig, matchingCoeff);
На рисунке ниже показан ответ после выполнения согласованной фильтрации принятого сигнала. Фазовые истории трех целей хорошо видны вдоль направления поперечной дальности, и была достигнута фокусировка дальности.
imagesc(real(cdata));title('SAR Range Compressed Data') xlabel('Cross-Range Samples') ylabel('Range Samples')

Сжатие по азимуту
Существует множество способов обработки данных о перекрестном диапазоне и получения конечного изображения из необработанных данных SAR, как только достигнуто сжатие диапазона. По существу, сжатие диапазона помогает достичь разрешения в направлении быстрого времени или диапазона, а разрешение в направлении поперечного диапазона достигается путем сжатия по азимуту или поперечному диапазону. Двумя такими методами являются алгоритм миграции диапазона и алгоритм обратной проекции, которые были продемонстрированы в этом примере.
rma_processed = helperRangeMigration(cdata,fastTime,fc,fs,prf,speed,numpulses,c,Rc); bpa_processed = helperBackProjection(cdata,rnggrid,fastTime,fc,fs,prf,speed,crossRangeResolution,c);
Визуализация конечного изображения SAR.
Постройте график сфокусированного изображения SAR с использованием алгоритма миграции диапазона и алгоритма аппроксимации задней проекции. Показан только участок изображения, сформированный с помощью алгоритма переноса дальности, чтобы точно указать местоположение целей.
Перенос дальности и точная форма алгоритма обратного проецирования, как показано на [2] и [3], обеспечивают теоретическое разрешение как в поперечном направлении, так и в направлении вдоль дорожки. Поскольку используемая здесь обратная проекция имеет приблизительную форму, разброс по азимутальному направлению очевиден в случае обратной проекции, тогда как данные, обработанные с помощью алгоритма миграции диапазона, показывают, что достигается теоретическое разрешение.
figure(1); imagesc((abs((rma_processed(1700:2300,600:1400).')))); title('SAR Data focused using Range Migration algorithm ') xlabel('Cross-Range Samples') ylabel('Range Samples')

figure(2) imagesc((abs(bpa_processed(600:1400,1700:2300)))); title('SAR Data focused using Back-Projection algorithm ') xlabel('Cross-Range Samples') ylabel('Range Samples')

В этом примере показано, как развивать обработку SAR с использованием сигнала LFM в сценарии сбора данных по воздуху. Пример также показывает, как генерировать изображение из принятого сигнала посредством миграции диапазона и приближенной формы алгоритмов обратной проекции.
Каффорио, К., Прати, К. и Рокка, Ф., 1991. Фокусировка данных SAR с использованием методов сейсмической миграции. Сделки IEEE по аэрокосмическим и электронным системам, 27 (2), стр. 194-207.
Камминг, И., Беннетт, Дж., 1979. Цифровая обработка данных Seasat SAR. Международная конференция IEEE по акустике, речи и обработке сигналов.
Na Y., Lu Y., Sun H., A Comparison of Back-Projection and Range Migration Algorithms for Ultra-Wideband SAR Imaging, четвертый семинар IEEE по матрице датчиков и многоканальной обработке, 2006., Waltham, MA., 2006, pp. 320-324.
Егулалп, А. Ф., 1999. Алгоритм быстрого обратного проецирования радара с синтезированной апертурой. Материалы радарной конференции IEEE 1999 года.
Алгоритм переноса диапазона
function azcompresseddata = helperRangeMigration(sigData,fastTime,fc,fs,prf,speed,numPulses,c,Rc)Эта функция демонстрирует алгоритм переноса дальности для получения изображения радара с синтезированной апертурой. Импульсные сжатые данные синтетической апертуры рассматриваются в этом алгоритме.
Задайте диапазон частот.
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;
Формирование матрицы волновых чисел перекрестного диапазона для согласования с размером принятого двумерного сигнала SAR
kazimuth = kaz.'; kx = krange.^2-kazimuth.^2;
Задайте конечное волновое число для достижения фокусировки по азимуту.
kx = sqrt(kx.*(kx > 0)); kFinal = exp(1i*kx.*Rc);
Выполнение двухмерного БПФ для сжатого сигнала диапазона.
sdata =fftshift(fft(fftshift(fft(sigData,[],1),1),[],2),2);
Выполните массовое сжатие, чтобы получить сжатие по азимуту в опорном диапазоне. Выполните фильтрацию 2-го сигнала FFT с новым поперечным диапазоном wavenumber, чтобы достигнуть полного сосредоточения в референсных значениях и как побочный продукт, частичное сосредоточение целей, не лежащих в референсных значениях.
fsmPol = (sdata.').*kFinal;
Выполнить интерполяцию Столта для достижения фокусировки целей, не лежащих на опорном диапазоне
stoltPol = fsmPol; for i = 1:size((fsmPol),1) stoltPol(i,:) = interp1(kx(i,:),fsmPol(i,:),krange(1,:)); end stoltPol(isnan(stoltPol)) = 1e-30; stoltPol = stoltPol.*exp(-1i*krange.*Rc); azcompresseddata = ifft2(stoltPol); end
Алгоритм обратной проекции
function data = helperBackProjection(sigdata,rnggrid,fastTime,fc,fs,prf,speed,crossRangeResolution,c)Эта функция демонстрирует алгоритм обратной проекции во временной области для получения изображения радара с синтезированной апертурой. Данные импульсной сжатой синтетической апертуры берутся в качестве входных данных в этом алгоритме. Инициализируйте выходную матрицу.
data = zeros(size(sigdata));
azimuthDist = -200:speed/prf:200;%azimuth distanceОграничение обрабатываемых пикселов диапазона и перекрестного диапазона для сокращения времени обработки.
rangelims = [700 1400]; crossrangelims = [-10 10];
Проиндексировать сетку диапазона в соответствии с пределами диапазона.
rangeIdx = [find(rnggrid>rangelims(1), 1) find(rnggrid<rangelims(2),1,'last')];Проиндексировать расстояние по азимуту в соответствии с пределами поперечного диапазона.
crossrangeIdxStart = find(azimuthDist>crossrangelims(1),1); crossrangeIdxStop = find(azimuthDist<crossrangelims(2),1,'last'); for i= rangeIdx(1):rangeIdx(2) % Iterate over the range indices % Using desired cross-range resolution, compute the synthetic aperture % length lsynth= (c/fc)* (c*fastTime(i)/2)/(2*crossRangeResolution); lsar = round(lsynth*length(azimuthDist)/azimuthDist(end)) ; % Ensure lsar is an odd number lsar = lsar + mod(lsar,2); % Construct hanning window for cross-range processing, to suppress the % azimuthal side lobes hn= hanning(lsar).'; % Iterate over the cross-range indices for j= crossrangeIdxStart:crossrangeIdxStop % azimuth distance in x direction over cross-range indices posx= azimuthDist(j); % range in y-direction over range indices posy= c*fastTime(i)/2; % initializing count to zero count= 0; % Iterate over the synthetic aperture for k= j-lsar/2 +1:j+ lsar/2 % Time delay for each of range and cross-range indices td= sqrt((azimuthDist(k)- posx)^2 + posy^2)*2/c; cell= round(td*fs) +1 ; signal = sigdata(cell,k); count= count + hn(k -(j-lsar/2))*signal *exp(1j*2*pi*fc*(td)); end % Processed data at each of range and cross-range indices data(i,j)= count; end end end