exponenta event banner

Углово-доплеровский отклик

Преимущества визуализации угла-доплеровского отклика

Визуализация сигнала в области угол-доплер может помочь вам определить характеристики сигнала в направлении и скорости. Можно различать цели, движущиеся с различными скоростями в различных направлениях. Если платформа передатчика неподвижна, возврат от карты стационарных целей к нулю в доплеровской области, в то время как возврат от движущихся целей демонстрирует ненулевой доплеровский сдвиг. Если визуализировать отклик массива в области угол-доплер, стационарная мишень выдает отклик под заданным углом и нулем доплеровского.

Вы можете использовать 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');

Figure contains an axes. The axes with title Angle-Doppler Response Pattern contains 2 objects of type image, text.

Как и ожидалось, углово-доплеровский отклик показывает наибольший отклик при нулевом доплеровском и 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');

Figure contains an axes. The axes with title Angle-Doppler Response Pattern contains 2 objects of type image, text.

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