Угловой Доплер Респонс

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

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

Можно использовать объект 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.

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);

Двухсторонний эффект Доплера составляет приблизительно 1 626 Гц. Угол азимута составляет 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 ° в ожидаемом эффекте Доплера.