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