шаг

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

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

Синтаксис

[resp,rnggrid] = step(response,x)
[resp,rnggrid] = step(response,x,xref)
[resp,rnggrid] = step(response,x,coeff)

Описание

Примечание

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

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

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

пример

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

Примечание

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

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

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

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

Пример: phased.RangeResponse

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

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

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

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

Смотрите радарный куб данных.

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

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

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

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

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

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

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

Зависимости

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

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

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

Зависимости

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

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

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

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

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

  • M с комплексным знаком - вектор-столбец элемента

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

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

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

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

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

trueM равняется частному количества строк, K, входного сигнала значением фактора десятикратного уменьшения, D, заданного в DecimationFactor.
'Matched filter'нет данныхM = 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 μs и рабочим циклом 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);

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

Создайте Системный объект 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)')

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

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

Введенный в R2017a