поэтапный. DopplerEstimator

Доплеровская оценка

Описание

Система phased.DopplerEstimator object™ оценивает Доплеровские частоты целей. Вход к средству оценки состоит из местоположений обнаружения вывод от детектора и куб данных об ответе Доплера области значений. Когда обнаружения кластеризируются, Доплеровские частоты вычисляются с помощью кластерной информации. Кластеризация сопоставляет несколько обнаружений в одно расширенное обнаружение.

Вычислить Доплеровские значения для обнаружений:

  1. Задайте и настройте свое Доплеровское средство оценки с помощью процедуры Конструкции, которая следует.

  2. Вызовите метод step, чтобы вычислить Доплера обнаружений, с помощью свойств, которые вы задаете для Системного объекта phased.DopplerEstimator.

Примечание

Вместо того, чтобы использовать метод step, чтобы выполнить операцию, заданную Системным объектом, можно вызвать объект с аргументами, как будто это была функция. Например, y = step(obj,x) и y = obj(x) выполняют эквивалентные операции.

Конструкция

estimator = phased.DopplerEstimator создает Доплеровский Системный объект средства оценки, estimator.

estimator = phased.DopplerEstimator(Name,Value) создает Системный объект, estimator, с каждым заданным набором свойства Name к заданному Value. Можно задать дополнительное имя и аргументы пары значения в любом порядке как (Name1,Value1..., NameN,ValueN).

Свойства

развернуть все

Источник количества требуемых Доплеровских оценок, заданных как 'Auto' или 'Property'.

Если вы устанавливаете это свойство на 'Auto', количество оценок равняется количеству столбцов во входном параметре detidx метода step. Если кластерные идентификаторы обеспечиваются, количество оценок равняется количеству уникальных кластерных идентификаторов.

Если вы устанавливаете это свойство на 'Property', количество оценок, о которых сообщают, получено из значения свойства NumEstimates.

Типы данных: char

Максимальное количество оценок, чтобы сообщить, заданный как положительное целое число. Когда количество требуемых оценок больше, чем количество столбцов в аргументе detidx метода step, остаток заполнен NaN.

Зависимости

Чтобы включить это свойство, установите свойство NumEstimatesSource на 'Property'.

Типы данных: c | double

Опция, чтобы принять clusterids как входной параметр к методу step, заданному как false или true. Установка этого свойства к true включает входной параметр clusterid метода step.

Типы данных: логический

Опция, чтобы включить вывод Доплеровской оценки отклонения, заданной как false или true. Доплеровские оценки отклонений возвращены в выходном аргументе dopvar метода step.

Типы данных: логический

Количество импульсов в Доплере обработало куб данных, заданный как положительное целое число.

Зависимости

Чтобы включить это свойство, установите свойство VarianceOutputPort на true.

Типы данных: single | double

Источник шумовых значений степени, заданных как 'Property' или 'Input port'. Шумовая степень используется, чтобы вычислить Доплеровское отклонение оценки и ОСШ. Если вы устанавливаете это свойство на 'Property', значение свойства NoisePower представляет шумовую степень в местоположениях обнаружения. Если вы устанавливаете это свойство на 'Input port', можно задать шумовую степень с помощью входного параметра noisepower метода step.

Типы данных: char

Постоянное шумовое значение степени по кубу данных Доплера области значений, заданному как положительная скалярная величина. Шумовые блоки питания линейны. То же шумовое значение степени применяется ко всем обнаружениям.

Зависимости

Чтобы включить это свойство, установите свойство VarianceOutputPort на true и установите NoisePowerSource на 'Property'.

Типы данных: single | double

Методы

шагОценочная цель Доплер
Характерный для всех системных объектов
release

Позвольте изменения значения свойства Системного объекта

Примеры

развернуть все

Чтобы оценить область значений и скорость трех целей, создайте карту Доплера области значений с помощью Системы phased.RangeDopplerResponse object™. Затем используйте phased.RangeEstimator и Системные объекты phased.DopplerEstimator, чтобы оценить область значений и скорость. Передатчик и получатель расположены изотропные элементы антенны, формирующие моностатическую радиолокационную систему.

Переданный сигнал является линейной формой волны FM с импульсным интервалом повторения (PRI) 7,0 μs и рабочим циклом 2%. Рабочая частота составляет 77 ГГц, и частота дискретизации составляет 150 МГц.

fs = 150e6;
c = physconst('LightSpeed');
fc = 77.0e9;
pri = 7e-6;
prf = 1/pri;

Настройте параметры сценария. Передатчик и получатель являются стационарными и расположены в начале координат. Цели 500, 530, и в 750 метрах от радара вдоль оси X. Цели проходят ось X на скоростях –60, 20, и 40 м/с. Все три цели имеют не колеблющееся радарное поперечное сечение (RCS) 10 дБ. Создайте радарные платформы и цель.

Numtgts = 3;
tgtpos = zeros(Numtgts);
tgtpos(1,:) = [500 530 750];
tgtvel = zeros(3,Numtgts);
tgtvel(1,:) = [-60 20 40];
tgtrcs = db2pow(10)*[1 1 1];
tgtmotion = phased.Platform(tgtpos,tgtvel);
target = phased.RadarTarget('PropagationSpeed',c,'OperatingFrequency',fc, ...
    'MeanRCS',tgtrcs);
radarpos = [0;0;0];
radarvel = [0;0;0];
radarmotion = phased.Platform(radarpos,radarvel);

Создайте антенны передатчика и получателя.

txantenna = phased.IsotropicAntennaElement;
rxantenna = clone(txantenna);

Настройте обработку сигналов конца передатчика. Создайте upsweep линейный сигнал FM с пропускной способностью одной половины частоты дискретизации. Найдите длину PRI в выборках и затем оцените RMS пропускную способность и разрешение области значений.

bw = fs/2;
waveform = phased.LinearFMWaveform('SampleRate',fs, ...
    'PRF',prf,'OutputFormat','Pulses','NumPulses',1,'SweepBandwidth',fs/2, ...
    'DurationSpecification','Duty cycle','DutyCycle',0.02);
sig = waveform();
Nr = length(sig);
bwrms = bandwidth(waveform)/sqrt(12);
rngrms = c/bwrms;

Настройте передатчик и свойства Системного объекта теплоотвода. Пиковая выходная мощность составляет 10 Вт, и усиление передатчика составляет 36 дБ.

peakpower = 10;
txgain = 36.0;
txgain = 36.0;
transmitter = phased.Transmitter( ...
    'PeakPower',peakpower, ...
    'Gain',txgain, ...
    'InUseOutputPort',true);
radiator = phased.Radiator( ...
    'Sensor',txantenna,...
    'PropagationSpeed',c,...
    'OperatingFrequency',fc);

Настройте канал свободного пространства в двухстороннем режиме распространения.

channel = phased.FreeSpace( ...
    'SampleRate',fs, ...    
    'PropagationSpeed',c, ...
    'OperatingFrequency',fc, ...
    'TwoWayPropagation',true);

Настройте обработку конца получателя. Установите усиление получателя и шумовую фигуру.

collector = phased.Collector( ...
    'Sensor',rxantenna, ...
    'PropagationSpeed',c, ...
    'OperatingFrequency',fc);
rxgain = 42.0;
noisefig = 1;
receiver = phased.ReceiverPreamp( ...
    'SampleRate',fs, ...
    'Gain',rxgain, ...
    'NoiseFigure',noisefig);

Цикл по импульсам, чтобы создать куб данных 128 импульсов. Для каждого шага цикла переместите цель и распространите сигнал. Затем поместите полученный сигнал в куб данных. Куб данных содержит полученный сигнал на импульс. Обычно, куб данных имеет три измерения, где последняя размерность соответствует антеннам или лучам. Поскольку только один датчик используется, куб имеет только две размерности.

Шаги обработки:

  1. Переместите радар и цели.

  2. Передайте форму волны.

  3. Распространите сигнал формы волны к цели.

  4. Отразите сигнал от цели.

  5. Распространите форму волны назад к радару. Двухстороннее распространение включает, позволяет вам объединить распространение возврата с исходящим распространением.

  6. Получите сигнал в радаре.

  7. Загрузите сигнал в куб данных.

Np = 128;
dt = pri;
cube = zeros(Nr,Np);
for n = 1:Np
    [sensorpos,sensorvel] = radarmotion(dt);
    [tgtpos,tgtvel] = tgtmotion(dt);
    [tgtrng,tgtang] = rangeangle(tgtpos,sensorpos);
    sig = waveform();
    [txsig,txstatus] = transmitter(sig);
    txsig = radiator(txsig,tgtang);
    txsig = channel(txsig,sensorpos,tgtpos,sensorvel,tgtvel);    
    tgtsig = target(txsig);   
    rxcol = collector(tgtsig,tgtang);
    rxsig = receiver(rxcol);
    cube(:,n) = rxsig;
end

Отобразите куб данных, содержащий сигналы на импульс.

imagesc([0:(Np-1)]*pri*1e6,[0:(Nr-1)]/fs*1e6,abs(cube))
xlabel('Slow Time {\mu}s')
ylabel('Fast Time {\mu}s')
axis xy

Создайте и отобразите изображение Доплера области значений для 128 Доплеровских интервалов. Изображение показывает область значений вертикально и скорость горизонтально. Используйте линейную форму волны FM для фильтрации соответствия. Изображение, вот карта Доплера области значений.

ndop = 128;
rangedopresp = phased.RangeDopplerResponse('SampleRate',fs, ...
    'PropagationSpeed',c,'DopplerFFTLengthSource','Property', ...
    'DopplerFFTLength',ndop,'DopplerOutput','Speed', ...
    'OperatingFrequency',fc);
matchingcoeff = getMatchedFilter(waveform);
[rngdopresp,rnggrid,dopgrid] = rangedopresp(cube,matchingcoeff);
imagesc(dopgrid,rnggrid,10*log10(abs(rngdopresp)))
xlabel('Closing Speed (m/s)')
ylabel('Range (m)')
axis xy

Поскольку цели простираются вдоль положительной оси X, положительная скорость в глобальной системе координат соответствует отрицательной скорости сближения. Отрицательная скорость в глобальной системе координат соответствует положительной скорости сближения.

Оцените шумовую степень после согласованной фильтрации. Создайте постоянное шумовое фоновое изображение в целях симуляции.

mfgain = matchingcoeff'*matchingcoeff;
dopgain = Np;
noisebw = fs;
noisepower = noisepow(noisebw,receiver.NoiseFigure,receiver.ReferenceTemperature);
noisepowerprc = mfgain*dopgain*noisepower;
noise = noisepowerprc*ones(size(rngdopresp));

Создайте область значений и Доплеровские объекты средства оценки.

rangeestimator = phased.RangeEstimator('NumEstimatesSource','Auto', ...
    'VarianceOutputPort',true,'NoisePowerSource','Input port', ...
    'RMSResolution',rngrms);
dopestimator = phased.DopplerEstimator('VarianceOutputPort',true, ...
    'NoisePowerSource','Input port','NumPulses',Np);

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

detidx = NaN(2,Numtgts);
tgtrng = rangeangle(tgtpos,radarpos);
tgtspd = radialspeed(tgtpos,tgtvel,radarpos,radarvel);
tgtdop = 2*speed2dop(tgtspd,c/fc);
for m = 1:numel(tgtrng)
    [~,iMin] = min(abs(rnggrid-tgtrng(m)));
    detidx(1,m) = iMin;
    [~,iMin] = min(abs(dopgrid-tgtspd(m)));
    detidx(2,m) = iMin;
end

Найдите шумовую степень в местоположениях обнаружения.

ind = sub2ind(size(noise),detidx(1,:),detidx(2,:));

Оцените область значений и отклонение области значений в местоположениях обнаружения. Предполагаемые области значений соглашаются с постулируемыми областями значений.

[rngest,rngvar] = rangeestimator(rngdopresp,rnggrid,detidx,noise(ind))
rngest = 3×1

  499.7911
  529.8380
  750.0983

rngvar = 3×1
10-4 ×

    0.0273
    0.0276
    0.2094

Оцените отклонение скорости и скорости в местоположениях обнаружения. Предполагаемые скорости соглашаются с предсказанными скоростями.

[spdest,spdvar] = dopestimator(rngdopresp,dopgrid,detidx,noise(ind))
spdest = 3×1

   60.5241
  -19.6167
  -39.5838

spdvar = 3×1
10-5 ×

    0.0806
    0.0816
    0.6188

Алгоритмы

развернуть все

Ссылки

[1] Ричардс, M. Основные принципы Радарной Обработки сигналов. 2-й редактор Разработка Профессионала McGraw-Hill, 2014.

[2] Ричардс, M., Дж. Шир, и В. Холм, принципы современного радара: основные принципы. SciTech Publishing, 2010.

Расширенные возможности

Введенный в R2017a