В этом примере показано, как применить основной рабочий процесс панели инструментов к следующему сценарию: Предположим, что имеется одна изотропная антенна, работающая на частоте 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 функция > для определения дальности и угла между антенной и целью.
[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);
Требуемый SNR составляет приблизительно 5 дБ. Предположим, что необходимо установить пиковую мощность передачи для достижения требуемого SNR для цели на дальности до 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
