Оценка области значений
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
— Максимальное количество оценок
(значение по умолчанию) | положительное целое числоМаксимальное количество области значений оценивает, чтобы сообщить в виде положительного целого числа. Количество требуемых оценок может быть больше количества столбцов в detidx
аргумент или количество уникальных идентификаторов в clusterids
аргумент step
метод. В этом случае остаток заполнен NaN
.
Чтобы включить это свойство, установите NumEstimatesSource
свойство к 'Property'
.
Типы данных: single
| double
ClusterInputPort
— Примите кластерные идентификаторы как входfalse
(значение по умолчанию) | true
Опция, чтобы принять кластерные идентификаторы как входной параметр к step
метод в виде false
или true
. Установка этого свойства к true
включает clusterids
входной параметр.
Типы данных: логический
VarianceOutputPort
— Выведите отклонение для оценок области значенийfalse
(значение по умолчанию) | true
Опция, чтобы включить выход области значений оценивает отклонения в виде false
или true
. Дисперсии области значений возвращены rngvar
выходной аргумент step
метод.
Типы данных: логический
RMSResolution
— Среднеквадратичное разрешение области значений
(значение по умолчанию) | положительная скалярная величинаСреднеквадратичное разрешение области значений обнаружения в виде положительной скалярной величины. Значение RMSResolution
должен иметь те же модули как rangegrid
входной параметр step
метод.
Чтобы включить это свойство, установите значение VarianceOutputPort
свойство к true
.
Типы данных: single
| double
NoisePowerSource
— Источник значений шумовой мощности'Property'
(значение по умолчанию) | 'Input port'
Источник значений шумовой мощности в виде 'Property'
или 'Input port'
. Шумовая мощность используется для расчета отклонение оценки области значений и ОСШ. Если вы устанавливаете это свойство на 'Property'
, значение NoisePower
свойство представляет шумовую мощность в местоположениях обнаружения. Если вы устанавливаете это свойство на 'Input port'
, можно задать шумовую мощность с помощью noisepower
входной параметр, step
метод.
Типы данных: char
NoisePower
— Шумовая мощность
(значение по умолчанию) | положительная скалярная величинаПостоянное значение шумовой мощности по ответу области значений или кубу данных об ответе Доплера области значений в виде положительного действительного скаляра. Модули шумовой мощности линейны. То же значение шумовой мощности применяется ко всем обнаружениям.
Чтобы включить это свойство, установите значение 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 импульсов. Для каждого шага цикла переместите цель и распространите сигнал. Затем поместите полученный сигнал в куб данных. Куб данных содержит полученный сигнал на импульс. Обычно, куб данных имеет три измерения, где последняя размерность соответствует антеннам или лучам. Поскольку только один датчик используется, куб имеет только две размерности.
Шаги обработки:
Переместите радар и цели.
Передайте форму волны.
Распространите сигнал формы волны к цели.
Отразите сигнал от цели.
Распространите форму волны назад к радару. Двухстороннее распространение позволяет вам объединить распространение возврата с исходящим распространением.
Получите сигнал в радаре.
Загрузите сигнал в куб данных.
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.RangeDopplerResponse
или phased.RangeResponse
Системные объекты. Первая размерность куба представляет область значений. Только первая размерность используется, чтобы оценить область значений. Все другие размерности проигнорированы. Чтобы интерпретировать местоположение обнаружения, необходимо передать в rnggrid
вектор, соответствующий значениям области значений по этому измерению. Смотрите Радарную Концепцию Куба Данных.
phased.RangeEstimator
Системный объект оценивает область значений обнаружения путем выполнения этих шагов:
Введите обработанный областью значений куб данных об ответе, полученный от любого phased.RangeResponse
или phased.RangeDopplerResponse
Системный объект. Первая размерность куба представляет быстро-разовую или эквивалентную область значений возвращенных выборок сигнала. Только эта размерность используется, чтобы оценить область значений обнаружения. Все другие проигнорированы.
Введите матрицу индексов обнаружения, которые задают местоположение обнаружений в кубе данных. Каждый столбец обозначает отдельное обнаружение. Записи строки определяют индексы в куб данных. Можно получить индексы обнаружения как выход phased.CFARDetector
или phased.CFARDetector2D
детекторы. Чтобы возвратить эти индексы, установите 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.