step

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

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

Описание

Примечание

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

[resp,rnggrid] = step(response,x) вычисляет область значений ответ, resp, для входного сигнала, x, и значений области значений, rnggrid, соответствующих отклику. Этот синтаксис применяется при установке RangeMethod на 'FFT' и DechirpInput на false. Этот синтаксис принимает, что входной сигнал уже был дешифрован. Этот синтаксис чаще всего используется с сигналами FMCW.

[resp,rnggrid] = step(response,x,xref) вычисляет область значений ответ входного сигнала, x используя опорный сигнал, xref. Этот синтаксис применяется при установке RangeMethod на 'FFT' и DechirpInput на true. Часто опорный сигнал является переданным сигналом. Этот синтаксис принимает, что входной сигнал не был дешифрован. Этот синтаксис чаще всего используется с сигналами FMCW.

пример

[resp,rnggrid] = step(response,x,coeff) вычисляет область значений ответ x использование согласованного фильтра coeff. Этот синтаксис применяется при установке RangeMethod на 'Matched filter'. Этот синтаксис чаще всего используется с импульсными сигналами.

Примечание

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

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

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

Область значений ответ, заданный как phased.RangeResponse Системный объект.

Пример: phased.RangeResponse

Входной радиолокационный кубик данных, заданный как комплексно- K вектор-столбец, a K -by- L матрица или K -by- N -by- L массив.

  • K - количество быстрых выборок или выборок области значений.

  • N - количество независимых пространственных каналов, таких как датчики или направления.

  • L - это медленная размерность, которая соответствует количеству импульсов или свипов в входном сигнале.

Смотрите Radar Data Cube.

Каждое измерение K-element в быстром времени обрабатывается независимо.

Для форм волны FMCW с треугольным сдвигом сдвиги чередуются между положительным и отрицательным наклонами. Однако phased.RangeResponse предназначен для обработки последовательных выступов того же уклона. Применение phased.RangeResponse для системы треугольника-протягивания используйте один из следующих подходов:

  • Задайте положительное SweepSlope значение свойства, с x соответствует только восходящим ветрам. После получения Доплера или значений скорости разделите их на 2.

  • Задайте отрицательное SweepSlope значение свойства, с x соответствует только нисходящим потокам. После получения Доплера или значений скорости разделите их на 2.

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

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

Уставка, используемая для дешифрования, задается как комплексный вектор- K-на-1 столбец. Количество строк должно равняться длине быстрой размерности x.

Зависимости

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

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

Согласованные фильтры, заданные как комплексный вектор- P-на-1 столбец. P должно быть меньше или равно K. K - это количество выборки быстрого времени или области значений.

Зависимости

Чтобы включить этот входной параметр, задайте значение RangeMethod на 'Matched filter'.

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

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

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

Кубик данных отклика области значений, возвращенный как одно из следующего:

  • Вектор M -элемента с комплексным значением

  • Комплексная M -by - L матрица

  • Комплексный M -by- N by- L массив

Значение M зависит от типа обработки

Свойство RangeMethodСвойство DechirpInputЗначение M
'FFT'false

Если вы задаете RangeFFTLength свойство к 'Auto'M = K, длина быстрой размерности x. В противном случае M равняется значению RangeFFTLength свойство.

trueM равен частному от количества строк, K, входного сигнала на значение коэффициента десятикратного уменьшения, D, заданное в DecimationFactor.
'Matched filter'n/aM = K, длина быстрой размерности x.

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

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

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

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

Примеры

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

Вычислите радар области значений ответ трех целей при помощи phased.RangeResponse Системные object™. Передатчик и приемник являются связанными изотропными антенными элементами, образующими моностатическую радиолокационную систему. Переданный сигнал является линейной FM-формой волны с интервалом повторения импульса 7,0 мкс и коэффициентом заполнения 2%. Рабочая частота составляет 77 ГГц, а частота дискретизации - 150 МГц.

fs = 150e6;
c = physconst('LightSpeed');
fc = 77e9;
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;
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);

Настройте обработку конца получателя. Коэффициент усиления приемника составляет 42 дБ, а рисунок шума равен 10.

collector = phased.Collector( ...
    'Sensor',rxantenna, ...
    'PropagationSpeed',c, ...
    'OperatingFrequency',fc);
rxgain = 42.0;
noisefig = 10;
receiver = phased.ReceiverPreamp( ...
    'SampleRate',fs, ...
    'Gain',rxgain, ...
    'NoiseFigure',noisefig);

Закольцовывайте более 128 импульсов, чтобы создать кубик данных. Для каждого шага цикла перемещайте цель и распространяйте сигнал. Затем положите принятый сигнал в кубик данных. Кубик данных содержит принятый сигнал на импульс. Обычно кубик данных имеет три размерности, где последняя размерность соответствует антеннам или лучам. Поскольку в этом примере используется только один датчик, кубик имеет только две размерности.

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

  1. Перемещайте радар и цели.

  2. Передайте форму волны.

  3. Передайте сигнал формы волны на цель.

  4. Отражайте сигнал от цели.

  5. Передайте форму волны назад на радар. Двухсторонний режим распространения позволяет объединить возвращенное распространение с исходящим распространением.

  6. Прием сигнала на радар.

  7. Загрузите сигнал в кубик данных.

Np = 128;
cube = zeros(Nr,Np);
for n = 1:Np
    [sensorpos,sensorvel] = radarmotion(pri);
    [tgtpos,tgtvel] = tgtmotion(pri);
    [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')

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

Создайте phased.RangeResponse Системный объект в согласованный фильтр режиме. Затем отобразите изображение отклика области значений для 128 импульсов. Изображение показывает область значений по вертикали и число импульсов по горизонтали.

matchingcoeff = getMatchedFilter(waveform);
ndop = 128;
rangeresp = phased.RangeResponse('SampleRate',fs,'PropagationSpeed',c);
[resp,rnggrid] = rangeresp(cube,matchingcoeff);
imagesc([1:Np],rnggrid,abs(resp))
xlabel('Pulse')
ylabel('Range (m)')

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

Интегрирование 20 импульсов некогерентно.

intpulse = pulsint(resp(:,1:20),'noncoherent');
plot(rnggrid,abs(intpulse))
xlabel('Range (m)')
title('Noncoherent Integration of 20 Pulses')

Figure contains an axes. The axes with title Noncoherent Integration of 20 Pulses contains an object of type line.

Введенный в R2017a