exponenta event banner

поэтапный. DopplerEstimator

Доплеровская оценка

Описание

phased.DopplerEstimator Система object™ оценивает доплеровские частоты целей. Вход в блок оценки состоит из местоположений обнаружения, выходящих из детектора, и куба данных диапазона-доплеровского отклика. При кластеризации обнаружений доплеровские частоты вычисляются с использованием кластерной информации. Кластеризация связывает несколько обнаружений в одно расширенное обнаружение.

Чтобы вычислить доплеровские значения для обнаружений:

  1. Определите и настройте доплеровский оценщик с помощью следующей процедуры конструирования.

  2. Позвоните в step метод для вычисления доплеровского числа обнаружений, используя свойства, указанные для phased.DopplerEstimator Системный объект.

Примечание

Вместо использования step для выполнения операции, определенной объектом System, можно вызвать объект с аргументами, как если бы это была функция. Например, y = step(obj,x) и y = obj(x) выполнять эквивалентные операции.

Строительство

estimator = phased.DopplerEstimator создает объект системы доплеровской оценки, estimator.

estimator = phased.DopplerEstimator(Name,Value) создает объект System, estimator, с каждым указанным свойством Name установить в указанное значение Value. Можно указать дополнительные аргументы пары имен и значений в любом порядке как (Name1,Value1,...,NameN,ValueN).

Свойства

развернуть все

Источник количества запрашиваемых доплеровских оценок, указанный как 'Auto' или 'Property'.

Если для этого свойства задано значение 'Auto', количество оценок равно количеству столбцов в detidx входной аргумент step способ. Если указаны идентификаторы кластера, количество оценок равно количеству уникальных идентификаторов кластера.

Если для этого свойства задано значение 'Property', количество сообщенных оценок получено из значения NumEstimates собственность.

Типы данных: char

Максимальное число оценок для отчета, указанное как положительное целое число. Когда количество запрошенных оценок превышает количество столбцов в detidx аргумент step способ, остаток заполняется NaN.

Зависимости

Чтобы включить это свойство, установите значение NumEstimatesSource свойство для 'Property'.

Типы данных: c | double

Возможность принятия clusterids в качестве входного аргумента для step метод, указанный как false или true. Установка для этого свойства значения true включает clusterid входной аргумент step способ.

Типы данных: logical

Опция для включения вывода оценки доплеровской дисперсии, указанной как false или true. Оценки доплеровских дисперсий возвращаются в dopvar выходной аргумент step способ.

Типы данных: logical

Число импульсов в доплеровском кубе обработанных данных, указанное как положительное целое число.

Зависимости

Чтобы включить это свойство, установите значение VarianceOutputPort свойство для true.

Типы данных: single | double

Источник значений мощности шума, указанный как 'Property' или 'Input port'. Мощность шума используется для вычисления дисперсии доплеровской оценки и SNR. Если для этого свойства задано значение 'Property', значение NoisePower свойство представляет мощность шума в местоположениях обнаружения. Если для этого свойства задано значение 'Input port', вы можете указать мощность шума с помощью noisepower входной аргумент step способ.

Типы данных: char

Постоянное значение мощности шума в диапазоне - куб данных Доплера, заданный как положительный скаляр. Шумовые силовые агрегаты линейные. Одинаковое значение мощности шума применяется ко всем обнаружениям.

Зависимости

Чтобы включить это свойство, установите значение 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 импульсов. Для каждого шага цикла перемещайте цель и распространяйте сигнал. Затем поместите принятый сигнал в куб данных. Куб данных содержит принятый сигнал на импульс. Обычно куб данных имеет три измерения, где последнее измерение соответствует антеннам или лучам. Поскольку используется только один датчик, куб имеет только два измерения.

Шаги обработки:

  1. Переместите РЛС и цели.

  2. Передача сигнала.

  3. Распространение сигнала формы сигнала на цель.

  4. Отражение сигнала от цели.

  5. Распространение сигнала обратно на радар. Двустороннее распространение позволяет комбинировать возвратное распространение с исходящим.

  6. Прием сигнала на РЛС.

  7. Загрузите сигнал в куб данных.

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

Figure contains an axes. The axes contains an object of type image.

Создайте и отобразите доплеровское изображение диапазона для 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

Figure contains an axes. The axes contains an object of type image.

Поскольку цели лежат вдоль положительной оси 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

Алгоритмы

развернуть все

Ссылки

[1] Ричардс, М. Основы обработки радиолокационных сигналов. 2-й ред. McGraw-Hill Professional Engineering, 2014.

[2] Ричардс, М., Дж. Шеер и В. Холм, Принципы современного радара: основные принципы. SciTech Publishing, 2010.

Расширенные возможности

.
Представлен в R2017a