step

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

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

Описание

Примечание

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

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