Оценка области значений
Система phased.RangeEstimator
object™ оценивает области значений целей. Вход к средству оценки состоит из ответа области значений или куба данных об ответе Доплера области значений и местоположений обнаружения от детектора. Когда информация о кластерах обнаружений доступна, области значений вычисляются с помощью кластерной информации. Кластеризация сопоставляет несколько обнаружений в одно расширенное обнаружение.
Вычислить обнаружения для куба Доплера области значений или ответа области значений:
Задайте и настройте средство оценки области значений с помощью процедуры Конструкции, которая следует.
Вызовите метод 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
).
NumEstimatesSource
— Источник количества области значений оценивает, чтобы сообщить'Auto'
(значение по умолчанию) | 'Property'
Источник количества области значений оценивает, чтобы сообщить, заданный как 'Auto'
или 'Property'
.
Если вы устанавливаете это свойство на 'Auto'
, количество оценок, о которых сообщают, определяется от количества столбцов во входе detidx
к методу step
. Если кластерные идентификаторы обеспечиваются, количество оценок определяется от количества уникальных кластерных идентификаторов во входе clusterids
к методу step
.
Если вы устанавливаете это свойство на 'Property'
, количество оценок, о которых сообщают, получено из значения свойства NumEstimates
.
Типы данных: char
NumEstimates
— Максимальное количество оценок1
(значение по умолчанию) | положительное целое числоМаксимальное количество области значений оценивает, чтобы сообщить, заданный как положительное целое число. Количество требуемых оценок может быть больше, чем количество столбцов в аргументе detidx
или количество уникальных идентификаторов в аргументе clusterids
метода step
. В этом случае остаток заполнен NaN
.
Чтобы включить это свойство, установите свойство NumEstimatesSource
на 'Property'
.
Типы данных: single | double
ClusterInputPort
— Примите кластерные идентификаторы как входfalse
(значение по умолчанию) | true
Опция, чтобы принять кластерные идентификаторы как входной параметр к методу step
, заданному как false
или true
. Установка этого свойства к true
включает входной параметр clusterids
.
Типы данных: логический
VarianceOutputPort
— Выведите отклонение для оценок области значенийfalse
(значение по умолчанию) | true
Опция, чтобы включить вывод области значений оценивает отклонения, заданные как false
или true
. Дисперсии области значений возвращены выходным аргументом rngvar
метода step
.
Типы данных: логический
RMSResolution
— Среднеквадратичное разрешение области значений1.0
(значение по умолчанию) | положительная скалярная величинаСреднеквадратичное разрешение области значений обнаружения, заданного как положительная скалярная величина. Значение RMSResolution
должно иметь те же модули как входной параметр rangegrid
метода step
.
Чтобы включить это свойство, установите значение свойства VarianceOutputPort
к true
.
Типы данных: single | double
NoisePowerSource
— Источник шумовых значений степени'Property'
(значение по умолчанию) | 'Input port'
Источник шумовых значений степени, заданных как 'Property'
или 'Input port'
. Шумовая степень используется, чтобы вычислить отклонение оценки области значений и ОСШ. Если вы устанавливаете это свойство на 'Property'
, значение свойства NoisePower
представляет шумовую степень в местоположениях обнаружения. Если вы устанавливаете это свойство на 'Input port'
, можно задать шумовую степень с помощью входного параметра noisepower
метода step
.
Типы данных: char
NoisePower
— Шумовая степень1.0
(значение по умолчанию) | положительная скалярная величинаПостоянное шумовое значение степени по ответу области значений или кубу данных об ответе Доплера области значений, заданному как положительный действительный скаляр. Шумовые блоки питания линейны. То же шумовое значение степени применяется ко всем обнаружениям.
Чтобы включить это свойство, установите значение свойства 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 импульсов. Для каждого шага цикла переместите цель и распространите сигнал. Затем поместите полученный сигнал в куб данных. Куб данных содержит полученный сигнал на импульс. Обычно, куб данных имеет три измерения, где последняя размерность соответствует антеннам или лучам. Поскольку только один датчик используется, куб имеет только две размерности.
Шаги обработки:
Переместите радар и цели.
Передайте форму волны.
Распространите сигнал формы волны к цели.
Отразите сигнал от цели.
Распространите форму волны назад к радару. Двухстороннее распространение включает, позволяет вам объединить распространение возврата с исходящим распространением.
Получите сигнал в радаре.
Загрузите сигнал в куб данных.
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
Один вход к средству оценки области значений является кубом данных об ответе. Чтобы создать куб данных об ответе, используйте Системные объекты phased.RangeResponse
или phased.RangeDopplerResponse
. Первая размерность куба представляет область значений. Только первая размерность используется, чтобы оценить область значений. Все другие размерности проигнорированы. Чтобы интерпретировать местоположение обнаружения, необходимо передать в соответствии вектора rnggrid
значениям области значений по этому измерению. Смотрите Радарную Концепцию Куба Данных.
Системный объект phased.RangeEstimator
оценивает область значений обнаружения путем выполнения этих шагов:
Введите обработанный областью значений куб данных об ответе, полученный или из phased.RangeResponse
или из Системного объекта phased.RangeDopplerResponse
. Первая размерность куба представляет быстро-разовую или эквивалентную область значений возвращенных выборок сигнала. Только эта размерность используется, чтобы оценить область значений обнаружения. Все другие проигнорированы.
Введите матрицу индексов обнаружения, которые задают местоположение обнаружений в кубе данных. Каждый столбец обозначает отдельное обнаружение. Записи строки определяют индексы в куб данных. Можно получить индексы обнаружения как вывод детекторов phased.CFARDetector2D
или phased.CFARDetector
. Чтобы возвратить эти индексы, установите свойство OutputFormat
любого детектора CFAR к 'Detection index'
.
Вход Optionally вектор - строка из кластерных идентификаторов. Этот вектор равен в длине количеству обнаружений. Каждый элемент этого вектора присваивает ID соответствующему обнаружению. Чтобы сформировать кластеры из обнаружений, тот же ID может быть присвоен больше чем одному обнаружению. Чтобы включить эту опцию, установите свойство ClusterInputPort
на true
.
Когда ClusterInputPort
является false
, объект вычисляет область значений для каждого обнаружения. Алгоритм находит значения ответа в местоположении обнаружения и в двух смежных индексах в кубе по измерению области значений. Затем алгоритм соответствует квадратичной кривой к значениям ответа области значений в этих трех местах и находит местоположение пика. Когда обнаружения происходят на первой или последней выборке в размерности области значений, ответ области значений оценивается от центроида 2D точки. Оценка в местоположении индекса обнаружения и на выборке, смежной с индексом обнаружения.
Когда ClusterInputPort
является true
, объект вычисляет область значений для каждого кластера. Алгоритм находит индексы самого большого значения ответа в кластере и соответствует формуле корней квадратного уравнения к тому обнаружению таким же образом что касается отдельных обнаружений.
Преобразуйте дробные индексные значения подходящих пиковых местоположений, чтобы расположиться. Чтобы преобразовать индексы, выберите соответствующие модули для входного параметра rnggrid
метода step
. Можно использовать значения для rnggrid
, полученного или из phased.RangeResponse
или из Системных объектов phased.RangeDopplerResponse
.
Объект вычисляет предполагаемое отклонение области значений с помощью связанного Ziv-Zakai.
Этот Системный объект поддерживает одинарную и двойную точность для входных данных, свойств и аргументов. Если входные данные, X
является одинарной точностью, выходные данные, являются одинарной точностью. Если входные данные, X
является двойной точностью, выходные данные, являются двойной точностью. Точность вывода независима от точности свойств и других аргументов.
[1] Ричардс, M. Основные принципы Радарной Обработки сигналов. 2-й редактор Разработка Профессионала McGraw-Hill, 2014.
[2] Ричардс, M., Дж. Шир и В. Холм. Принципы современного радара: основные принципы. SciTech Publishing, 2010.
Указания и ограничения по применению:
Смотрите системные объекты в Генерации кода MATLAB (MATLAB Coder).
Этот Системный объект поддерживает одинарную и двойную точность для входных данных, свойств и аргументов. Если входные данные, X
является одинарной точностью, выходные данные, являются одинарной точностью. Если входные данные, X
является двойной точностью, выходные данные, являются двойной точностью. Точность вывода независима от точности свойств и других аргументов.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.