В этом примере показано, как смоделировать основанную на центре внимания систему Радара с синтезированной апертурой (SAR) с помощью Линейного FM (LFM) Форма волны. В случае косого режима платформа РСА смотрится искоса или чтобы ожидать или назад определенным углом от разворота в зависимости от потребности. Косой режим помогает в областях обработки изображений, предстоящих текущему радарному местоположению платформы в будущем или к расположениям изображения, стоящим за местоположением платформы для интерферометрических приложений. Проблема в косом режиме происходит выше из-за связи азимута области значений. Поскольку разрешение РСА зависит от сигнала и настройки антенны, разрешение может быть намного выше, чем для основанных на видении систем обработки изображений. Используя режим центра внимания, этот пример выполняет алгоритм миграции области значений [1,3], чтобы отобразить стационарные цели, предстоящие местоположению платформы РСА в будущем. Линейная форма волны FM предлагает преимущество большого продукта полосы пропускания времени в значительно более низкой степени передачи, делающей его подходящий для использования в бортовых системах. Для получения дополнительной информации о терминологии, используемой в этом примере, см. Формирование Радара с синтезированной апертурой (SAR) Изображений Stripmap.
Рассмотрите бортовой РСА, действующий в 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);
В этом примере две статических цели точки сконфигурированы в местоположениях, заданных ниже. Целая сцена как показано далее в симуляции предстоит платформе в будущем. Концы сбора данных перед бортовой платформой имеют в ряд целевое местоположение. Все цели имеют среднее значение ЭПР 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, усиливающую сигнал LFM в бортовом сценарии сбора данных. Пример также демонстрирует формирование изображения от полученного сигнала с помощью модифицированного алгоритма миграции области значений, чтобы обработать эффект, должный смотреть искоса.
Cafforio, C., Прати, C. и Рокка, F., 1991. Фокусировка данных о РСА с помощью сейсмических методов миграции. Транзакции IEEE на космических и электронных системах, 27 (2), pp.194-207.
Soumekh, M., 1999. Обработка сигналов Радара с синтезированной апертурой с алгоритмами MATLAB. John Wiley & Sons, Inc.
Stolt, R.H., Миграция методами преобразования Фурье, Геофизикой, 1978, 43, стр 23-48
Алгоритм миграции области значений
function azcompresseddata = helperSquintRangeMigration(sigData,fastTime,fc,fs,prf,speed,numPulses,c,Rc,squintangle)
Эта функция демонстрирует алгоритм миграции области значений для обработки изображений стороны, выглядящей, синтетической апертурой radar.The пульсировала, сжатые синтетические апертурные данные рассматриваются в этом алгоритме.
Установите промежуток частоты области значений.
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);
Выполните объемное сжатие, чтобы получить сжатие азимута в диапазоне ссылки. Выполните фильтрацию 2D сигнала БПФ с новым волновым числом перекрестной области значений, чтобы достигнуть полной фокусировки в диапазоне ссылки и как побочный продукт, частичная фокусировка целей, не лежащих в диапазоне ссылки.
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