step

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

Оценка целевого доплеровского значения

Описание

Примечание

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

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

Примечание

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

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

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

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

Пример: phased.DopplerEstimator

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

Типы данных: 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

Введенный в R2017a