phased.RangeEstimator

Оценка области значений

Описание

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

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

  1. Определите и настройте оценщик области значений, используя следующую процедуру конструкции.

  2. Вызовите step метод вычисления области значений, используя свойства, заданные для phased.RangeEstimator Системный объект.

Примечание

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

Конструкция

estimator = phased.RangeEstimator создает оценщик области значений Системный объект, estimator.

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

Свойства

расширить все

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

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

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

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

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

Зависимости

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

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

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

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

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

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

Среднее значение корня области значений разрешение обнаружения, заданное как положительная скалярная величина. Значение RMSResolution должны иметь те же модули, что и rangegrid входной параметр 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 мкс и коэффициентом заполнения 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);

Настройте обработку сигнала на конце передатчика. Создайте восходящий линейный 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

Figure contains an axes. The axes contains an object of type image.

Создайте и отобразите изображение диапазона-Доплера для 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

Figure contains an axes. The axes contains an object of type image.

Поскольку цели лежат вдоль положительной оси 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);

Найдите целевые индексы в изображении range-Doppler. Вместо использования 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] Ричардс, М. Основы обработки радиолокационных сигналов. 2-й ред. McGraw-Hill Professional Engineering, 2014.

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

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

.
Введенный в R2017a