Доплеровская оценка
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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.