step

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

Оцените целевой диапазон

Описание

Примечание

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

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

пример

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

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

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

Примечание

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

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

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

Средство оценки области значений в виде phased.RangeEstimator Системный объект.

Пример: phased.RangeEstimator

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

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

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

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

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

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

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

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

Типы данных: 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 является размерностью rngest. Каждый элемент rngvar соответствует элементу rngest. Отклонение средства оценки вычисляется с помощью связанного 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

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

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

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