step

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

Оценка целевой области значений

Описание

Примечание

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

rngest = step(estimator,resp,rnggrid,detidx) оценки варьируются из обнаружений, полученных из куба данных отклика области значений, resp. Оценки области значений вычисляются для каждой позиции обнаружения, сообщаемой в detidx. The 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).

Примечание

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

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

расширить все

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

Пример: phased.RangeEstimator

Обработанный областью значений куб данных ответа, определенный как вектор - столбец <reservedrangesplaceholder8>-by-1 со сложным знаком, со сложным знаком M N матрицей или со сложным знаком M N 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. Обнаружение с тем же идентификатором кластера находится в одном кластере.

Зависимости

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

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

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

расширить все

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

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

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

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

Отклонение оценки области значений, возвращенная как положительный, реальный K вектор-столбец, где K - размерность rngest. Каждый элемент rngvar соответствует элементу rngest. Отклонение оценки вычисляется с помощью границы Зива-Закая.

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

Примеры

расширить все

Чтобы оценить дальность и скорость трех целей, создайте карту Доплера области значений с помощью phased.RangeDopplerResponse Системные object™. Затем используйте phased.RangeEstimator и phased.DopplerEstimator Системные объекты для оценки области значений и скорости. Передатчик и приемник являются связанными изотропными антенными элементами, образующими моностатическую радиолокационную систему.

Переданный сигнал является линейной FM-формой волны с интервалом повторения импульса (PRI) 7,0 мкс и коэффициентом заполнения 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);

Настройте обработку сигнала на конце передатчика. Создайте восходящий линейный 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);

Найдите целевые индексы в изображении range-Doppler. Вместо использования 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