В этом примере показано, как применить основной рабочий процесс тулбокса к следующему сценарию: Примите, что у вас есть одна изотропная антенна, действующая на уровне 4 ГГц. Примите, что антенна расположена в начале координат вашей глобальной системы координат. Существует цель с неколеблющимся радарным сечением 0,5 квадратных метров, первоначально расположенных в (7000,5000,0). Цель перемещается с постоянным вектором скорости (-15;-10; 0). Ваша антенна передает десять меандров с длительностью 1 μs в импульсной частоте повторения (PRF) 5 кГц. Импульсы распространяют к цели, отражаются от цели, распространяют назад к антенне и собраны антенной. Антенна действует в моностатическом режиме, получая только, когда передатчик неактивен.
Примечание: Этот пример запускается только в R2016b или позже. Если вы используете более ранний релиз, заменяете каждый вызов функции с эквивалентным step
синтаксис. Например, замените myObject(x)
с step(myObject,x)
.
Чтобы создать форму волны, используйте phased.RectangularWaveform
Система object™ и набор свойства к требуемым значениям.
waveform = phased.RectangularWaveform('PulseWidth',1e-6,... 'PRF',5e3,'OutputFormat','Pulses','NumPulses',1);
Смотрите Формы волны Меандра для более подробных примеров при создании формы волны.
Чтобы смоделировать антенну, используйте phased.IsotropicAntennaElement
Системный объект. Установите операционный частотный диапазон антенны к (1,10) ГГц. Изотропная антенна излучает равную энергию для углов азимута от-180 ° до 180 ° и углов вертикального изменения от-90 ° до 90 °.
antenna = phased.IsotropicAntennaElement('FrequencyRange',[1e9 10e9]);
Чтобы смоделировать цель, используйте phased.RadarTarget
Системный объект. Цель имеет неколебание, RCS 0,5 квадратных метров и инцидент формы волны на цели имеют несущую частоту 4 ГГц. Форма волны, отражающаяся от цели, распространяет со скоростью света. Параметрируйте эту информацию в определении вашей цели.
target = phased.RadarTarget('Model','Nonfluctuating','MeanRCS',0.5,... 'PropagationSpeed',physconst('LightSpeed'),'OperatingFrequency',4e9);
Чтобы смоделировать местоположение и перемещение антенны и цели, используйте phased.Platform
Системный объект. Антенна является стационарной в этом сценарии и расположена в начале координат глобальной системы координат. Цель первоначально расположена в (7000,5000,0) и перемещается с постоянным вектором скорости (-15,-10,0).
antennaplatform = phased.Platform('InitialPosition',[0;0;0],'Velocity',[0;0;0]); targetplatform = phased.Platform('InitialPosition',[7000; 5000; 0],... 'Velocity',[-15;-10;0]);
Для определений и соглашений относительно систем координат, смотрите Системы Глобальной и Локальной координаты.
Используйте rangeangle
функция>, чтобы определить область значений и угол между антенной и целью.
[tgtrng,tgtang] = rangeangle(targetplatform.InitialPosition,...
antennaplatform.InitialPosition);
Смотрите Движение Моделировать в Поэтапных Системах Массивов для получения дополнительной информации о моделировании движения.
Чтобы смоделировать технические требования передатчика, используйте phased.Transmitter
Системный объект. Основной параметр в моделировании передатчика является пиковой степенью передачи. Чтобы определить пиковую степень передачи, примите, что желаемая вероятность обнаружения 0.9, и максимальная терпимая ложно-сигнальная вероятность . Примите, что эти десять меандров некогерентно интегрированы в получателе. Можно использовать albersheim
функция, чтобы определить необходимое отношение сигнал-шум (SNR).
Pd = 0.9; Pfa = 1e-6; numpulses = 10; SNR = albersheim(Pd,Pfa,10);
Необходимый ОСШ составляет приблизительно 5 дБ. Примите, что вы хотите привести в порядок пиковую степень передачи достигнуть необходимого ОСШ для вашей цели в области значений до 15 км. Примите, что передатчик имеет 20 усилений дБ. Используйте radareqpow
функция, чтобы определить необходимую пиковую степень передачи.
maxrange = 1.5e4; lambda = physconst('LightSpeed')/4e9; tau = waveform.PulseWidth; Pt = radareqpow(lambda,maxrange,SNR,tau,'RCS',0.5,'Gain',20);
Необходимая пиковая степень передачи составляет приблизительно 45 киловатт. Чтобы быть консервативными, используйте пиковую мощность 50 киловатт в моделировании вашего передатчика. Чтобы обеспечить постоянную фазу в импульсных сигналах, установите CoherentOnTransmit
свойство к true
. Поскольку вы управляете передатчиком в моностатическом (передача - получают), режим, установите InUseOutputPort
свойство к true
записывать состояние передатчика.
transmitter = phased.Transmitter('PeakPower',50e3,'Gain',20,'LossFactor',0,... 'InUseOutputPort',true,'CoherentOnTransmit',true);
Смотрите Передатчик для большего количества примеров при моделировании передатчиков и Основного уравнения радиолокации для примеров, которые используют основное уравнение радиолокации.
К излучению формы волны модели от массива используйте phased.Radiator
Системный объект. К узкополосному набору сигнала модели в массиве используйте phased.Collector
Системный объект. Для широкополосного набора сигнала используйте phased.WidebandCollector
Системный объект.
В этом примере импульс удовлетворяет узкополосному предположению сигнала. Несущая частота составляет 4 ГГц. Для значения Sensor
свойство, вставьте, используют указатель в изотропной антенне. В phased.Collector
Системный объект, набор Wavefront
свойство к 'Plane'
указывать, что инцидентная форма волны на антенне является плоской волной.
radiator = phased.Radiator('Sensor',antenna,... 'PropagationSpeed',physconst('LightSpeed'),'OperatingFrequency',4e9); collector = phased.Collector('Sensor',antenna,... 'PropagationSpeed',physconst('LightSpeed'),'Wavefront','Plane',... 'OperatingFrequency',4e9);
Чтобы смоделировать получатель, используйте phased.ReceiverPreamp
Системный объект. В получателе вы задаете шумовую фигуру и ссылочную температуру, которые являются ключевыми факторами внутреннего шума вашей системы. В этом примере, набор шумовая фигура к 2 дБ и ссылочная температура к 290 кельвинам. Отберите генератор случайных чисел к фиксированному значению для восстанавливаемых результатов.
receiver = phased.ReceiverPreamp('Gain',20,'NoiseFigure',2,... 'ReferenceTemperature',290,'SampleRate',1e6,... 'EnableInputPort',true,'SeedSource','Property','Seed',1e3);
Дополнительную информацию см. в Предусилителе Получателя.
Чтобы смоделировать среду распространения, используйте phased.FreeSpace
Системный объект. Можно смоделировать односторонний или 2D распространение путем установки TwoWayPropagation
свойство. В этом примере, набор это свойство к false
смоделировать одностороннее распространение.
channel = phased.FreeSpace(... 'PropagationSpeed',physconst('LightSpeed'),... 'OperatingFrequency',4e9,'TwoWayPropagation',false,... 'SampleRate',1e6);
Дополнительную информацию см. в Потерях при распространении в свободном пространстве.
Параметрировав все необходимые компоненты для сценария, вы готовы сгенерировать импульсы, распространить импульсы к и от цели и собрать эхо.
Следующий код готовится к основному циклу симуляции. Временной шаг между импульсами
T = 1/waveform.PRF; % Get antenna position txpos = antennaplatform.InitialPosition; % Allocate array for received echoes rxsig = zeros(waveform.SampleRate*T,numpulses);
Можно выполнить основной цикл симуляции со следующим кодом:
for n = 1:numpulses % Update the target position [tgtpos,tgtvel] = targetplatform(T); % Get the range and angle to the target [tgtrng,tgtang] = rangeangle(tgtpos,txpos); % Generate the pulse sig = waveform(); % Transmit the pulse. Output transmitter status [sig,txstatus] = transmitter(sig); % Radiate the pulse toward the target sig = radiator(sig,tgtang); % Propagate the pulse to the target in free space sig = channel(sig,txpos,tgtpos,[0;0;0],tgtvel); % Reflect the pulse off the target sig = target(sig); % Propagate the echo to the antenna in free space sig = channel(sig,tgtpos,txpos,tgtvel,[0;0;0]); % Collect the echo from the incident angle at the antenna sig = collector(sig,tgtang); % Receive the echo at the antenna when not transmitting rxsig(:,n) = receiver(sig,~txstatus); end
Некогерентно интегрируйте полученное эхо, создайте вектор логических элементов области значений и постройте результат. Красная вертикальная линия на графике отмечает область значений цели.
rxsig = pulsint(rxsig,'noncoherent'); t = unigrid(0,1/receiver.SampleRate,T,'[)'); rangegates = (physconst('LightSpeed')*t)/2; plot(rangegates/1e3,rxsig) hold on xlabel('range (km)') ylabel('Power'); ylim = get(gca,'YLim'); plot([tgtrng/1e3,tgtrng/1e3],[0 ylim(2)],'r') hold off