Визуализация сигнала в области угол-доплер может помочь вам определить характеристики сигнала в направлении и скорости. Можно различать цели, движущиеся с различными скоростями в различных направлениях. Если платформа передатчика неподвижна, возврат от карты стационарных целей к нулю в доплеровской области, в то время как возврат от движущихся целей демонстрирует ненулевой доплеровский сдвиг. Если визуализировать отклик массива в области угол-доплер, стационарная мишень выдает отклик под заданным углом и нулем доплеровского.
Вы можете использовать phased.AngleDopplerResponse объект визуализации углово-доплеровского отклика входных данных. phased.AngleDopplerResponse объект использует обычный узкополосный (фазовый сдвиг) формирователь луча и доплеровский фильтр на основе БПФ для вычисления угла-доплеровского отклика.
Отображение углово-доплеровского отклика стационарной матрицы на стационарную цель. Массив представляет собой шестиэлементный однородный линейный массив (ULA), расположенный в глобальном начале координат (0,0,0). Цель расположена на высоте (5000,5000,0) метров и имеет неплавающее сечение РЛС (RCS) 1 квадратный метр.
Примечание.Этот пример выполняется только в R2016b или более поздних версиях. При использовании более ранней версии замените каждый вызов функции эквивалентным step синтаксис. Например, заменить myObject(x) с step(myObject,x).
Создайте объекты, необходимые для моделирования целевого отклика в массиве.
antenna = phased.IsotropicAntennaElement... ('FrequencyRange',[8e8 5e9],'BackBaffled',true); lambda = physconst('LightSpeed')/4e9; array = phased.ULA(6,'Element',antenna,'ElementSpacing',lambda/2); waveform = phased.RectangularWaveform('PulseWidth',2e-006,... 'PRF',5e3,'SampleRate',1e6,'NumPulses',1); radiator = phased.Radiator('Sensor',array,... 'PropagationSpeed',physconst('LightSpeed'),... 'OperatingFrequency',4e9); collector = phased.Collector('Sensor',array,... 'PropagationSpeed',physconst('LightSpeed'),... 'OperatingFrequency',4e9); txplatform = phased.Platform('InitialPosition',[0;0;0],... 'Velocity',[0;0;0]); target = phased.RadarTarget('MeanRCS',1,'Model','nonfluctuating'); targetplatform = phased.Platform('InitialPosition',[5e3; 5e3; 0],... 'Velocity',[0;0;0]); freespace = phased.FreeSpace('OperatingFrequency',4e9,... 'TwoWayPropagation',false,'SampleRate',1e6); receiver = phased.ReceiverPreamp('NoiseFigure',0,... 'EnableInputPort',true,'SampleRate',1e6,'Gain',40); transmitter = phased.Transmitter('PeakPower',1e4,... 'InUseOutputPort',true,'Gain',40);
Распространение десяти прямоугольных импульсов к цели и от цели и сбор откликов в массиве.
PRF = 5e3; NumPulses = 10; wav = waveform(); tgtloc = targetplatform.InitialPosition; txloc = txplatform.InitialPosition; M = waveform.SampleRate*1/PRF; N = array.NumElements; rxsig = zeros(M,N,NumPulses); for n = 1:NumPulses % get angle to target [~,tgtang] = rangeangle(tgtloc,txloc); % transmit pulse [txsig,txstatus] = transmitter(wav); % radiate pulse txsig = radiator(txsig,tgtang); % propagate pulse to target txsig = freespace(txsig,txloc,tgtloc,[0;0;0],[0;0;0]); % reflect pulse off stationary target txsig = target(txsig); % propagate pulse to array txsig = freespace(txsig,tgtloc,txloc,[0;0;0],[0;0;0]); % collect pulse rxsig(:,:,n) = collector(txsig,tgtang); % receive pulse rxsig(:,:,n) = receiver(rxsig(:,:,n),~txstatus); end
Найдите и постройте график углово-доплеровского отклика. Затем добавьте метку +Target при ожидаемом азимутальном угле и доплеровской частоте.
tgtdoppler = 0; tgtLocation = global2localcoord(tgtloc,'rs',txloc); tgtazang = tgtLocation(1); tgtelang = tgtLocation(2); tgtrng = tgtLocation(3); tgtcell = val2ind(tgtrng,... physconst('LightSpeed')/(2*waveform.SampleRate)); snapshot = shiftdim(rxsig(tgtcell,:,:)); % Remove singleton dim response = phased.AngleDopplerResponse('SensorArray',array,... 'OperatingFrequency',4e9, ... 'PropagationSpeed',physconst('LightSpeed'),... 'PRF',PRF, 'ElevationAngle',tgtelang); plotResponse(response,snapshot); text(tgtazang,tgtdoppler,'+Target');

Как и ожидалось, углово-доплеровский отклик показывает наибольший отклик при нулевом доплеровском и 45 ° азимуте.
Этот пример иллюстрирует ненулевой доплеровский сдвиг, проявляемый неподвижной мишенью в присутствии движения матрицы. В общем, этот ненулевой сдвиг усложняет обнаружение медленно движущихся целей, потому что вызванный движением доплеровский сдвиг и разброс загромождения возвращают затемнение доплеровских сдвигов таких целей.
Примечание.Этот пример выполняется только в R2016b или более поздних версиях. При использовании более ранней версии замените каждый вызов функции эквивалентным step синтаксис. Например, заменить myObject(x) с step(myObject,x).
Сценарий в этом примере идентичен сценарию углово-доплеровского отклика стационарной матрицы на стационарную мишень, за исключением того, что ULA движется с постоянной скоростью. Для удобства повторяется код MATLAB™ для настройки объектов. Обратите внимание, что InitialPosition и Velocity свойства txplatform Системные object™ изменились. InitialPosition значение свойства устанавливается для моделирования бортового ULA. Мотивация для выбора конкретной ценности Velocity объясняется в разделе Применимость DPCA Pulse Canceller.
antenna = phased.IsotropicAntennaElement... ('FrequencyRange',[8e8 5e9],'BackBaffled',true); lambda = physconst('LightSpeed')/4e9; array = phased.ULA(6,'Element',antenna,'ElementSpacing',lambda/2); waveform = phased.RectangularWaveform('PulseWidth',2e-006,... 'PRF',5e3,'SampleRate',1e6,'NumPulses',1); radiator = phased.Radiator('Sensor',array,... 'PropagationSpeed',physconst('LightSpeed'),... 'OperatingFrequency',4e9); collector = phased.Collector('Sensor',array,... 'PropagationSpeed',physconst('LightSpeed'),... 'OperatingFrequency',4e9); vy = (array.ElementSpacing*waveform.PRF)/2; txplatform = phased.Platform('InitialPosition',[0;0;3e3],... 'Velocity',[0;vy;0]); target = phased.RadarTarget('MeanRCS',1,'Model','nonfluctuating'); tgtvel = [0;0;0]; targetplatform = phased.Platform('InitialPosition',[5e3; 5e3; 0],... 'Velocity',tgtvel); freespace = phased.FreeSpace('OperatingFrequency',4e9,... 'TwoWayPropagation',false,'SampleRate',1e6); receiver = phased.ReceiverPreamp('NoiseFigure',0,... 'EnableInputPort',true,'SampleRate',1e6,'Gain',40); transmitter = phased.Transmitter('PeakPower',1e4,... 'InUseOutputPort',true,'Gain',40);
Передают десять прямоугольных импульсов к цели при движении ULA. Затем соберите полученные эхо-сигналы.
PRF = 5e3; NumPulses = 10; wav = waveform(); tgtloc = targetplatform.InitialPosition; M = waveform.SampleRate*1/PRF; N = array.NumElements; rxsig = zeros(M,N,NumPulses); fasttime = unigrid(0,1/waveform.SampleRate,1/PRF,'[)'); rangebins = (physconst('LightSpeed')*fasttime)/2; for n = 1:NumPulses % move transmitter [txloc,txvel] = txplatform(1/PRF); % get angle to target [~,tgtang] = rangeangle(tgtloc,txloc); % transmit pulse [txsig,txstatus] = transmitter(wav); % radiate pulse txsig = radiator(txsig,tgtang); % propagate pulse to target txsig = freespace(txsig,txloc,tgtloc,txvel,tgtvel); % reflect pulse off stationary target txsig = target(txsig); % propagate pulse to array txsig = freespace(txsig,tgtloc,txloc,tgtvel,txvel); % collect pulse rxsig(:,:,n) = collector(txsig,tgtang); % receive pulse rxsig(:,:,n) = receiver(rxsig(:,:,n),~txstatus); end
Рассчитайте целевые углы и дальность относительно ULA. Затем вычислите доплеровский сдвиг, вызванный движением фазированной матрицы.
sp = radialspeed(tgtloc,tgtvel,txloc,txvel);
tgtdoppler = 2*speed2dop(sp,lambda);
tgtLocation = global2localcoord(tgtloc,'rs',txloc);
tgtazang = tgtLocation(1);
tgtelang = tgtLocation(2);
tgtrng = tgtLocation(3);Двусторонний доплеровский сдвиг составляет приблизительно 1626 Гц. Азимутальный угол равен 45 ° и идентичен значению, полученному в стационарном примере ULA.
Постройте график углово-доплеровского отклика.
tgtcell = val2ind(tgtrng,... physconst('LightSpeed')/(2*waveform.SampleRate)); snapshot = shiftdim(rxsig(tgtcell,:,:)); % Remove singleton dim hadresp = phased.AngleDopplerResponse('SensorArray',array,... 'OperatingFrequency',4e9, ... 'PropagationSpeed',physconst('LightSpeed'),... 'PRF',PRF, 'ElevationAngle',tgtelang); plotResponse(hadresp,snapshot); text(tgtazang,tgtdoppler,'+Target');

Углово-доплеровский отклик показывает наибольший отклик при азимуте 45 ° при ожидаемом доплеровском сдвиге.