Оценка дальности
phased.RangeEstimator Система object™ оценивает диапазоны целей. Вход в блок оценки состоит из куба данных о диапазоне-отклике или диапазоне-доплеровском отклике и местоположений обнаружения от детектора. Когда информация о кластерах обнаружений доступна, диапазоны вычисляются с использованием информации о кластерах. Кластеризация связывает несколько обнаружений в одно расширенное обнаружение.
Для вычисления обнаружений для диапазона-отклика или диапазона-доплеровского куба:
Определите и настройте оценщик диапазона с помощью следующей процедуры конструирования.
Позвоните в step для вычисления диапазона с использованием свойств, заданных для phased.RangeEstimator Системный объект.
Примечание
Вместо использования step для выполнения операции, определенной объектом System, можно вызвать объект с аргументами, как если бы это была функция. Например, y = step(obj,x) и y = obj(x) выполнять эквивалентные операции.
estimator = phased.RangeEstimator создает объект системы оценки диапазона, estimator.
estimator = phased.RangeEstimator( создает объект System, 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'. Мощность шума используется для вычисления дисперсии оценки дальности и SNR. Если для этого свойства задано значение 'Property', значение NoisePower свойство представляет мощность шума в местоположениях обнаружения. Если для этого свойства задано значение 'Input port', вы можете указать мощность шума с помощью noisepower входной аргумент, step способ.
Типы данных: char
NoisePower - Мощность шума1.0 (по умолчанию) | положительный скалярПостоянное значение мощности шума по кубу данных «диапазон-отклик» или «диапазон-доплеровский отклик», заданное как положительный действительный скаляр. Шумовые силовые агрегаты линейные. Одинаковое значение мощности шума применяется ко всем обнаружениям.
Чтобы включить это свойство, задайте значение VarianceOutputPort свойство для true и набор NoisePowerSource кому 'Property'.
Типы данных: single | double
| шаг | Оценка целевого диапазона |
| Общие для всех системных объектов | |
|---|---|
release | Разрешить изменение значения свойства объекта системы |
Чтобы оценить дальность и скорость трех целей, создайте доплеровскую карту дальности, используя phased.RangeDopplerResponse object™ системы. Затем используйте phased.RangeEstimator и phased.DopplerEstimator Объекты системы для оценки дальности и скорости. Передатчик и приемник являются совмещенными изотропными антенными элементами, образующими моностатическую радиолокационную систему.
Передаваемый сигнал представляет собой линейный ЧМ-сигнал с интервалом повторения импульсов (PRI) 7,0 мкс и рабочим циклом 2%. Рабочая частота 77 ГГц, частота дискретизации 150 МГц.
fs = 150e6;
c = physconst('LightSpeed');
fc = 77.0e9;
pri = 7e-6;
prf = 1/pri;Настройте параметры сценария. Передатчик и приемник неподвижны и расположены в начале координат. Цели находятся в 500, 530 и 750 метрах от радара по оси х. Цели движутся вдоль оси 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);
Настройка обработки сигналов на стороне передатчика. Создайте линейный ЧМ-сигнал повышенной частоты с полосой пропускания, равной половине частоты дискретизации. Найдите длину PRI в выборках, а затем оцените среднеквадратичную полосу пропускания и разрешение диапазона.
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 доплеровских ячеек. Изображение показывает диапазон по вертикали и скорость по горизонтали. Для фильтрации совпадений используется линейный ЧМ-сигнал. Изображение здесь - карта доплеровского диапазона.
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'.
Дополнительно введите вектор строки идентификаторов кластера. Этот вектор равен по длине числу обнаружений. Каждый элемент этого вектора присваивает идентификатор соответствующему обнаружению. Для формирования кластеров обнаружений один и тот же идентификатор может быть назначен нескольким обнаружениям. Чтобы включить этот параметр, установите ClusterInputPort свойство для true.
Когда ClusterInputPort является falseобъект вычисляет диапазон для каждого обнаружения. Алгоритм находит значения отклика в местоположении обнаружения и в двух смежных индексах в кубе вдоль измерения диапазона. Затем алгоритм подгоняет квадратичную кривую к величинам отклика диапазона в этих трех местоположениях и находит местоположение пика. Когда обнаружение происходит в первом или последнем образце в измерении диапазона, отклик диапазона оценивается по двухточечному центроиду. Оценка находится в местоположении индекса обнаружения и в выборке, смежной с индексом обнаружения.
Когда ClusterInputPort является true, объект вычисляет диапазон для каждого кластера. Алгоритм находит индексы наибольшего значения отклика в кластере и подгоняет квадратичную формулу к этому обнаружению так же, как для отдельных обнаружений.
Преобразуйте значения дробного индекса соответствующих местоположений пиков в диапазон. Чтобы преобразовать индексы, выберите соответствующие единицы измерения для rnggrid входной аргумент step способ. Можно использовать значения для rnggrid получены либо из phased.RangeResponse или phased.RangeDopplerResponse Системные объекты.
Объект вычисляет оценочную дисперсию диапазона с использованием границы Зив-Закаи.
Этот объект System поддерживает единственную и двойную точность входных данных, свойств и аргументов. Если входные данные X - единичная точность, выходные данные - единичная точность. Если входные данные X - двойная точность, выходные данные - двойная точность. Точность вывода не зависит от точности свойств и других аргументов.
[1] Ричардс, М. Основы обработки радиолокационных сигналов. 2-й ред. McGraw-Hill Professional Engineering, 2014.
[2] Ричардс, M., Дж. Шир и В. Холм. Принципы современного радара: основные принципы. SciTech Publishing, 2010.
Примечания и ограничения по использованию:
См. Системные объекты в создании кода MATLAB (кодер MATLAB).
Этот объект System поддерживает единственную и двойную точность входных данных, свойств и аргументов. Если входные данные X - единичная точность, выходные данные - единичная точность. Если входные данные X - двойная точность, выходные данные - двойная точность. Точность вывода не зависит от точности свойств и других аргументов.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.