exponenta event banner

шаг

Системный объект: поэтапный. 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'. Этот синтаксис чаще всего используется с импульсными сигналами.

Примечание

Объект выполняет инициализацию при первом выполнении объекта. Эта инициализация блокирует неперестраиваемые свойства и входные спецификации, такие как размеры, сложность и тип данных входных данных. При изменении неперестраиваемого свойства или входной спецификации системный объект выдает ошибку. Чтобы изменить неперестраиваемые свойства или входные данные, необходимо сначала вызвать 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 соответствует только восходящим сдвигам. После получения доплеровских или скоростных значений делите их на 2.

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

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

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

Опорный сигнал, используемый для дехирпирования, заданный как вектор 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 by-L с комплексными значениями

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

Свойство RureMethodСвойство DechirpInputЗначение М
'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™ системы. Передатчик и приемник являются совмещенными изотропными антенными элементами, образующими моностатическую радиолокационную систему. Передаваемый сигнал представляет собой линейный ЧМ-сигнал с интервалом повторения импульсов 7,0 мкс и рабочим циклом 2%. Рабочая частота 77 ГГц, частота дискретизации 150 МГц.

fs = 150e6;
c = physconst('LightSpeed');
fc = 77e9;
pri = 7e-6;
prf = 1/pri;

Настройте параметры сценария. Радиолокационный передатчик и приемник неподвижны и расположены в начале координат. Цели находятся в 500, 530 и 750 метрах от радаров на оси х. Цели движутся вдоль оси 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);

Настройка обработки сигналов на стороне передатчика. Создайте линейный ЧМ-сигнал верхнего диапазона с полосой пропускания, равной половине частоты дискретизации. Найдите длину pri в выборках, а затем оцените среднеквадратичную полосу пропускания и разрешение диапазона.

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