В этом примере показано, как применить рабочий процесс базового тулбокса к следующему сценарию: Предположим, что у вас есть одна изотропная антенна, работающая на частоте 4 ГГц. Предположим, что антенна находится в источнике глобальной системы координат. Существует цель с неколеблющимся радиолокационным сечением 0,5 квадратных метров, первоначально расположенная на (7000 5000 0). Цель движется с вектором постоянной скорости (-15; -10; 0). Ваша антенна передает десять прямоугольных импульсов длительностью 1 мкс при частоте повторения импульса (PRF) 5 кГц. Импульсы распространяются на цель, отражаются от цели, распространяются назад к антенне и собираются антенной. Антенна работает в моностатическом режиме, получая только, когда передатчик неактивен.
Чтобы создать форму волны, используйте 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
function > для определения области значений и угла между антенной и целью.
[tgtrng,tgtang] = rangeangle(targetplatform.InitialPosition, ...
antennaplatform.InitialPosition);
Смотрите Моделирование Движения в Системах Фазированных Решеток для получения дополнительной информации о движении моделирования.
Чтобы смоделировать спецификации передатчика, используйте phased.Transmitter
Системный объект. Ключевой параметр в моделировании передатчика является пиковой степенью передачи. Чтобы определить пиковую степень передачи, примите, что желаемая вероятность обнаружения составляет 0,9, и максимально допустимая вероятность ложного предупреждения является . Примите, что десять прямоугольных импульсов некогерентно интегрированы в приемнике. Можно использовать albersheim
функция для определения необходимого отношения сигнал/шум (ОСШ).
Pd = 0.9; Pfa = 1e-6; numpulses = 10; SNR = albersheim(Pd,Pfa,10);
Необходимый ОСШ составляет приблизительно 5 дБ. Предположим, что вы хотите задать пиковую степень передачи в порядок, чтобы достичь необходимого ОСШ для вашей цели в области значений до 15 км. Примите, что передатчик имеет коэффициент усиления 20 дБ. Используйте основное уравнение радиолокации, чтобы определить необходимый пик степени передачи.
maxrange = 1.5e4; lambda = physconst('LightSpeed')/target.OperatingFrequency; tau = waveform.PulseWidth; Ts = 290; rcs = 0.5; Gain = 20; dbterm = db2pow(SNR - 2*Gain); Pt = (4*pi)^3*physconst('Boltzmann')*Ts/tau/rcs/lambda^2*maxrange^4*dbterm;
Необходимая пиковая степень передачи составляет приблизительно 45 киловатт. Чтобы быть консервативным, используйте пиковую степень 50 киловатт в моделировании вашего передатчика. Чтобы поддерживать постоянную фазу в импульсных сигналах, установите CoherentOnTransmit
свойство к true
. Поскольку вы управляете передатчиком в моностатическом (приемо-передаточном) режиме, установите InUseOutputPort
свойство к true
для записи состояния передатчика.
transmitter = phased.Transmitter('PeakPower',50e3,'Gain',20,'LossFactor',0, ... 'InUseOutputPort',true,'CoherentOnTransmit',true);
Смотрите Передатчик для получения дополнительных примеров по моделированию передатчиков и Основное Уравнение Радиолокации (Radar Toolbox) для примеров, которые используют основное уравнение радиолокации.
Чтобы смоделировать излучение формы волны из массива, используйте 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
Системный объект. Можно смоделировать одностороннее или двухфазное распространение путем установки 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') xline([tgtrng/1e3,tgtrng/1e3],'r') hold off