поэтапный. RangeEstimator

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

Описание

Система 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.

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

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

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

Среднеквадратичное разрешение области значений обнаружения, заданного как положительная скалярная величина. Значение 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 μ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

Для просмотра документации необходимо авторизоваться на сайте