Оценка области значений
The 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
входной параметр.
Типы данных: logical
VarianceOutputPort
- Отклонение выходов для оценок области значенийfalse
(по умолчанию) | true
Опция для включения выхода отклонений оценки области значений, заданная как false
или true
. Отклонения области значений возвращаются rngvar
выходной аргумент step
способ.
Типы данных: logical
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 мкс и коэффициентом заполнения 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 импульсов. Для каждого шага цикла перемещайте цель и распространяйте сигнал. Затем положите принятый сигнал в кубик данных. Кубик данных содержит принятый сигнал на импульс. Обычно кубик данных имеет три размерности, где последняя размерность соответствует антеннам или лучам. Поскольку используется только один датчик, кубик имеет только две размерности.
Шаги обработки:
Перемещайте радар и цели.
Передайте форму волны.
Передайте сигнал формы волны на цель.
Отражайте сигнал от цели.
Передайте форму волны назад на радар. Двухстороннее распространение позволяет объединить распространение возврата с исходящим распространением.
Прием сигнала на радар.
Загрузите сигнал в кубик данных.
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);
Найдите целевые индексы в изображении 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
Одним из входов для оценки области значений является кубик данных отклика. Чтобы создать кубик данных отклика, используйте phased.RangeDopplerResponse
или phased.RangeResponse
Системные объекты. Первая размерность куба представляет область значений. Для оценки области значений используется только первая размерность. Все другие размерности игнорируются. Чтобы интерпретировать место обнаружения, вы должны пройти в rnggrid
вектор, соответствующий значениям области значений по этой размерности. См. Radar Данных Cube Концепции.
The phased.RangeEstimator
Системный объект оценивает область значений обнаружения следующими шагами:
Введите кубик данных отклика, обработанный в диапазоне, полученный из phased.RangeResponse
или phased.RangeDopplerResponse
Системный объект. Первая размерность куба представляет быструю или эквивалентную область значений выборок возвращенного сигнала. Только эта размерность используется для оценки области значений обнаружения. Все остальные игнорируются.
Введите матрицу индексов обнаружения, которые определяют местоположение обнаружений в кубе данных. Каждый столбец обозначает отдельное обнаружение. Записи в строках обозначают индексы в кубе данных. Вы можете получить индексы обнаружения как выход phased.CFARDetector
или phased.CFARDetector2D
детекторы. Чтобы вернуть эти индексы, установите OutputFormat
свойство CFAR детектора для 'Detection index'
.
Опционально введите вектор-строку с идентификаторами кластеров. Этот вектор равен по длине количеству обнаружений. Каждый элемент этого вектора присваивает идентификатор соответствующему обнаружению. Чтобы сформировать кластеры обнаружений, один и тот же идентификатор может быть назначен нескольким обнаружениям. Чтобы включить эту опцию, установите ClusterInputPort
свойство к true
.
Когда ClusterInputPort
является false
объект вычисляет область значений для каждого обнаружения. Алгоритм находит значения отклика в месте обнаружения и в двух соседних индексах в кубе по размерности области значений. Затем алгоритм подбирает квадратичную кривую к величинам отклика области значений в этих трех местоположениях и находит местоположение пика. Когда обнаружения происходят в первой или последней выборке в размерности области значений, реакция области значений оценивается из двухточечного центроида. Оценка находится в местоположении индекса обнаружения и в выборке, соседней с индексом обнаружения.
Когда ClusterInputPort
является true
объект вычисляет область значений для каждого кластера. Алгоритм находит индексы наибольшего значения отклика в кластере и подходит квадратичной формуле к этому обнаружению так же, как и для отдельных обнаружений.
Преобразуйте дробные индексы значения установленных пиковых местоположений в диапазон. Для преобразования индексов выберите соответствующие модули для rnggrid
входной параметр step
способ. Можно использовать значения для rnggrid
полученный от любого из phased.RangeResponse
или phased.RangeDopplerResponse
Системные объекты.
Объект вычисляет предполагаемое отклонение области значений, используя границу Зива-Закая.
Этот системный объект поддерживает одинарную и двойную точность для входных данных, свойств и аргументов. Если входные данные X
является одинарной точностью, выходные данные являются одинарной точностью. Если входные данные X
двойная точность, выходные данные двойная точность. Точность выхода не зависит от точности свойств и других аргументов.
[1] Ричардс, М. Основы обработки радиолокационных сигналов. 2-й ред. McGraw-Hill Professional Engineering, 2014.
[2] Ричардс, М., Дж. Шеер и У. Холм. Принципы современного радара: основные принципы. SciTech Publishing, 2010.
Указания и ограничения по применению:
Смотрите Системные объекты в Генерации кода MATLAB (MATLAB Coder).
Этот системный объект поддерживает одинарную и двойную точность для входных данных, свойств и аргументов. Если входные данные X
является одинарной точностью, выходные данные являются одинарной точностью. Если входные данные X
двойная точность, выходные данные двойная точность. Точность выхода не зависит от точности свойств и других аргументов.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.