phased.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 м/с. Все три цели имеют флюктуирующее радарное сечение (ЭПР) 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

Figure contains an axes object. The axes object 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 object. The axes object 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);

Найдите целевые индексы в изображении Доплера области значений. Вместо того, чтобы использовать детектор 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