Доплеровская оценка
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
— Максимальное количество оценок
(значение по умолчанию) | положительное целое числоМаксимальное количество оценок, чтобы сообщить в виде положительного целого числа. Когда количество требуемых оценок больше количества столбцов в detidx
аргумент step
метод, остаток заполнен NaN
.
Чтобы включить это свойство, установите NumEstimatesSource
свойство к 'Property'
.
Типы данных: c
| double
ClusterInputPort
— Примите clusterids
как введеноfalse
(значение по умолчанию) | true
Опция, чтобы принять clusterids
как входной параметр к step
метод в виде false
или true
. Установка этого свойства к true
включает clusterid
входной параметр step
метод.
Типы данных: логический
VarianceOutputPort
— Включите выход Доплеровских оценок отклоненияfalse
(значение по умолчанию) | true
Опция, чтобы включить выход Доплеровского отклонения оценивает в виде false
или true
. Доплеровские оценки отклонений возвращены в dopvar
выходной аргумент step
метод.
Типы данных: логический
NumPulses
— Количество импульсов в обработанной Доплерами форме волны
(значение по умолчанию) | положительное целое числоКоличество импульсов в Доплере обработало куб данных в виде положительного целого числа.
Чтобы включить это свойство, установите 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.DopplerEstimator
Системный объект оценивает, что Доплеровская частота обнаружения путем выполнения этих шагов Доплеровского средства оценки
Введите обработанный Доплерами куб данных об ответе, полученный из phased.RangeDopplerResponse
Системный объект. Первая размерность куба представляет быстро-разовую или эквивалентную область значений возвращенных выборок сигнала. Второе измерение представляет пространственную информацию, такую как датчики или лучи. Последняя размерность представляет ответ в зависимости от Доплеровской частоты. Только эта размерность используется, чтобы оценить обнаружение Доплеровская частота. Все другие проигнорированы. Смотрите Радарный Куб Данных.
Введите матрицу индексов обнаружения, которые задают местоположение обнаружений в кубе данных. Каждый столбец обозначает отдельное обнаружение. Записи строки определяют индексы в куб данных. Возвратить эти индексы обнаружения как выход phased.CFARDetector
или phased.CFARDetector2D
детекторы. Чтобы возвратить эти индексы, установите детектор 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.