Доплеровская оценка
The phased.DopplerEstimator Системная object™ оценивает доплеровские частоты целей. Вход в оценщик состоит из мест обнаружения, выводимых из детектора, и куба данных Доплеровского отклика области значений. При кластеризации обнаружений доплеровские частоты вычисляются с помощью информации о кластере. Кластеризация связывает несколько обнаружений в одно расширенное обнаружение.
Чтобы вычислить значения Допплера для обнаружений:
Определите и настройте доплеровскую оценку, используя следующую процедуру конструкции.
Вызовите step метод для вычисления Допплера обнаружений, используя свойства, заданные для phased.DopplerEstimator Системный объект.
Примечание
Вместо использования step метод для выполнения операции, заданной системным объектом, можно вызвать объект с аргументами, как если бы это была функция. Для примера, y = step(obj,x) и y = obj(x) выполнять эквивалентные операции.
estimator = phased.DopplerEstimator создает Системный объект Доплеровской оценки, estimator.
estimator = phased.DopplerEstimator( создает Системный объект, Name,Value)estimator, с каждым заданным свойством Name установить на заданную Value. Можно задать дополнительные аргументы в виде пар имен и значений в любом порядке как (Name1,Value1..., NameN,ValueN).
NumEstimatesSource - Источник запрашиваемого количества доплеровских оценок'Auto' (по умолчанию) | 'Property' Источник количества запрошенных доплеровских оценок, указанный как 'Auto' или 'Property'.
Если вы задаете это свойство равным 'Auto', количество оценок равняется количеству столбцов в detidx входной параметр step способ. Если указаны идентификаторы кластеров, количество оценок равняется количеству уникальных идентификаторов кластеров.
Если вы задаете это свойство равным 'Property', количество сообщенных оценок получается из значения NumEstimates свойство.
Типы данных: char
NumEstimates - Максимальное количество оценок1 (по умолчанию) | положительное целое числоМаксимальное количество оценок для отчета, заданное как положительное целое число. Когда количество запрошенных смет превышает количество столбцов в detidx аргумент step способ, остаток заполняется NaN.
Чтобы включить это свойство, установите NumEstimatesSource свойство к 'Property'.
Типы данных: c | double
ClusterInputPort - Принять clusterids как входfalse (по умолчанию) | trueОпция принятия clusterids как входной параметр к step метод, заданный как false или true. Установка значения свойства true включает clusterid входной параметр step способ.
Типы данных: logical
VarianceOutputPort - Включение выхода оценок отклонения Доплераfalse (по умолчанию) | trueОпция для включения выхода оценки отклонения Доплера, заданная как false или true. Оценки допплеровских отклонений возвращаются в dopvar выходной аргумент step способ.
Типы данных: logical
NumPulses - Количество импульсов в доплеровской форме волны2 (по умолчанию) | положительное целое числоКоличество импульсов в кубе данных Доплера, заданное как положительное целое число.
Чтобы включить это свойство, установите 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
The phased.DopplerEstimator Системный объект оценивает Доплеровскую частоту обнаружения, выполняя эти шаги Доплеровской оценки,
Введите кубик данных отклика, обработанный Доплером, полученный из phased.RangeDopplerResponse Системный объект. Первая размерность куба представляет быструю или эквивалентную область значений выборок возвращенного сигнала. Второе измерение представляет пространственную информацию, такую как датчики или лучи. Последняя размерность представляет ответ как функцию доплеровской частоты. Только эта размерность используется для оценки доплеровской частоты обнаружения. Все остальные игнорируются. Смотрите Radar Data Cube.
Введите матрицу индексов обнаружения, которые определяют местоположение обнаружений в кубе данных. Каждый столбец обозначает отдельное обнаружение. Записи в строках обозначают индексы в кубе данных. Чтобы вернуть эти индексы обнаружения как выход phased.CFARDetector или phased.CFARDetector2D детекторы. Чтобы вернуть эти индексы, установите детектор OutputFormat свойство CFAR детектора для 'Detection index'.
Опционально введите вектор-строку с идентификаторами кластеров. Этот вектор равен по длине количеству обнаружений. Каждый элемент этого вектора присваивает идентификатор соответствующему обнаружению. Чтобы сформировать кластеры обнаружений, один и тот же идентификатор может быть назначен нескольким обнаружениям. Чтобы включить эту опцию, установите ClusterInputPort свойство к true.
Когда ClusterInputPort является falseобъект вычисляет доплеровские частоты для каждого обнаружения. Алгоритм находит значения отклика в индексе обнаружения и в двух соседних индексах в кубе по размерности Доплера. Затем алгоритм подбирает квадратичную кривую к величинам доплеровского отклика при этих трех индексах. Пик кривой указывает место обнаружения. Когда обнаружения происходят в первой или последней выборке в размерности Доплера, объект оценивает местоположение обнаружения из двухточечного центроида. Центроид формируется с использованием местоположения индекса обнаружения и выборки рядом с индексом обнаружения.
Когда объект вычисляет доплеровские частоты для каждого кластера. Алгоритм находит индексы самого большого значения отклика в кластере. Затем алгоритм подбирает квадратичную кривую к этому обнаружению так же, как и для отдельных обнаружений.
Объект преобразует значения дробного индекса в Допплеровскую частоту или скорость с помощью соответствующих модулей измерения из dopgrid входной параметр step способ. Можно получить значения для dopgrid использование 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.