шаг

Системный объект: поэтапный. DopplerEstimator
Пакет: поэтапный

Оценочная цель Доплер

Синтаксис

dopest = step(estimator,resp,dopgrid,detidx)
[dopest,dopvar] = step(estimator,resp,dopgrid,detidx,noisepower)
[dopest,dopvar] = step(estimator,resp,dopgrid,detidx,clusterids)
[dopest,dopvar] = step(estimator,resp,dopgrid,detidx,noisepower,clusterids)

Описание

Примечание

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

dopest = step(estimator,resp,dopgrid,detidx) оценки Доплеровские частоты обнаружений, выведенных от данных об ответе Доплера области значений, resp. Доплеровские оценки вычисляются для каждого положения обнаружения, о котором сообщают в detidx. Аргумент dopgrid устанавливает модули для Доплеровской размерности куба данных об ответе.

пример

[dopest,dopvar] = step(estimator,resp,dopgrid,detidx,noisepower) также задает шумовую степень. Этот синтаксис применяется, когда вы устанавливаете свойство VarianceOutputPort на true и свойство NoisePowerSource к 'Input port'.

[dopest,dopvar] = step(estimator,resp,dopgrid,detidx,clusterids) также задает clusterids для обнаружений. Этот синтаксис применяется, когда вы устанавливаете свойство ClusterInputPort на true.

Можно объединить дополнительные аргументы ввода и вывода, когда их свойства включения установлены. Дополнительные вводы и выводы должны быть перечислены в том же порядке как порядок свойств включения. Например, [dopest,dopvar] = step(estimator,resp,dopgrid,detidx,noisepower,clusterids).

Примечание

Объект выполняет инициализацию в первый раз, когда объект выполняется. Эта инициализация блокирует ненастраиваемые свойства (MATLAB) и входные спецификации, такие как размерности, сложность и тип данных входных данных. Если вы изменяете ненастраиваемое свойство или входную спецификацию, Системный объект выдает ошибку. Чтобы изменить ненастраиваемые свойства или входные параметры, необходимо сначала вызвать метод release, чтобы разблокировать объект.

Входные параметры

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

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

Пример: phased.DopplerEstimator

Обработанный Доплерами куб данных об ответе, заданный как P с комплексным знаком-by-1 вектор-столбец, M с комплексным знаком-by-P матрица или M с комплексным знаком-by-N-by-P массив. M представляет количество выборок области значений или быстро-разовых. N является количеством пространственных элементов, таких как элементы датчика или лучи. P является количеством Доплеровских интервалов.

Размер первой размерности входной матрицы может отличаться, чтобы моделировать изменяющуюся длину сигнала. Изменение размера может произойти, например, в случае импульсной формы волны с переменной импульсной частотой повторения.

Типы данных: single | double
Поддержка комплексного числа: Да

Доплеровские значения сетки по Доплеровскому измерению аргумента resp, заданного как P с действительным знаком-by-1 вектор-столбец. dopgrid задает Доплеровские значения, соответствующие Доплеровской размерности аргумента resp. Доплеровские значения должны монотонно увеличиваться и равномерно распределенные. Можно задать значения сетки, чтобы быть скоростью или частотой. Модули находятся в герц или метрах/секунда.

Пример: [-0.3,-0.2,-0.1,0,0.1,0.2,0.3]

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

Индексы обнаружения, заданные как Nd с действительным знаком-by-Q матрица. Q является количеством обнаружений, и Nd является количеством размерностей куба данных об ответе, resp. Каждый столбец detidx содержит индексы Nd обнаружения в кубе данных об ответе.

Чтобы сгенерировать индексы обнаружения, можно использовать объекты phased.CFARDetector2D или phased.CFARDetector.

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

Шумовая степень в местоположениях обнаружения, заданных как положительная скалярная величина или 1 с действительным знаком Q вектором - строкой из положительных значений. Q является количеством обнаружений, заданных в detidx.

Зависимости

Чтобы включить этот входной параметр, установите свойство NoisePowerSource на Input port.

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

Кластерные идентификаторы, заданные как 1 с действительным знаком Q вектором - строкой, где Q является количеством обнаружений, заданных в detidx. Каждый элемент clusterids соответствует столбцу в detidx. Обнаружения с тем же кластерным ID принадлежат тому же кластеру.

Зависимости

Чтобы включить этот входной параметр, установите свойство ClusterInputPort на true.

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

Выходные аргументы

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

Доплеровские оценки, возвращенные как K с действительным знаком-by-1 вектор-столбец.

  • Когда ClusterInputPort является false, Доплеровские оценки вычисляются для каждого местоположения обнаружения в аргументе detidx. Затем K равняется размерности столбца, Q, detidx.

  • Когда ClusterInputPort является true, Доплеровские оценки вычисляются для каждого кластерного ID в аргументе clusterids. Затем K равняется количеству уникальных кластерных идентификаторов, Q.

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

Доплеровская дисперсия оценки, возвращенная как положительный, K с действительным знаком-by-1 вектор-столбец, где K является размерностью dopest. Каждый элемент dopvar соответствует элементу dopest. Отклонение средства оценки вычисляется с помощью связанного Ziv-Zakai.

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

Примеры

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

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

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

  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

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

Введенный в R2017a