шаг

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

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

Синтаксис

rngest = step(estimator,resp,rnggrid,detidx)
[rngest,rngvar] = step(estimator,resp,rnggrid,detidx,noisepower)
[rngest,rngvar] = step(estimator,resp,rnggrid,detidx,clusterids)
[rngest,rngvar] = step(estimator,resp,rnggrid,detidx,noisepower,clusterids)

Описание

Примечание

Вместо того, чтобы использовать метод 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).

Примечание

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

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

Для просмотра документации необходимо авторизоваться на сайте