Этот пример показывает, как создать и отобразить мультиплатформенный сценарий, содержащий наземный стационарный радар, поворотный самолет, самолет с постоянной скоростью и движущееся наземное транспортное средство. Поворотный самолет следует параболическому углу тангажа при снижении со скоростью 20 м/с.
Задайте частоту обновления сценария на 0,5 Гц. Для 150 шагов длительность сценария составляет 300 с.
updateRate = 0.5; N = 150;
Настройте поворотный самолет с помощью Acceleration
модель phased.Platform
Системные object™. Укажите начальное положение самолета по области значений и азимуту от наземного радара и его повышению. Самолет находится в 10 км от радара при 60 ° азимуте и имеет высоту 6 км. Самолет ускоряется на 10 м/с ² в отрицательном направлении x.
airplane1range = 10.0e3; airplane1Azimuth = 60.0; airplane1alt = 6.0e3; airplane1Pos0 = [cosd(airplane1Azimuth)*airplane1range;... sind(airplane1Azimuth)*airplane1range;airplane1alt]; airplane1Vel0 = [400.0;-100.0;-20]; airplane1Accel = [-10.0;0.0;0.0]; airplane1platform = phased.Platform('MotionModel','Acceleration',... 'AccelerationSource','Input port','InitialPosition',airplane1Pos0,... 'InitialVelocity',airplane1Vel0,'OrientationAxesOutputPort',true,... 'InitialOrientationAxes',eye(3));
Установите стационарный наземный радар в источник глобальной системы координат. Чтобы симулировать вращающийся радар, измените угол поворота луча наземного радара в цикле обработки.
groundRadarPos = [0,0,0]'; groundRadarVel = [0,0,0]'; groundradarplatform = phased.Platform('MotionModel','Velocity',... 'InitialPosition',groundRadarPos,'Velocity',groundRadarVel,... 'InitialOrientationAxes',eye(3));
Установите наземное транспортное средство, чтобы двигаться с постоянной скоростью.
groundVehiclePos = [5e3,2e3,0]'; groundVehicleVel = [50,50,0]'; groundvehicleplatform = phased.Platform('MotionModel','Velocity',... 'InitialPosition',groundVehiclePos,'Velocity',groundVehicleVel,... 'InitialOrientationAxes',eye(3));
Установите второй самолет, чтобы также двигаться с постоянной скоростью.
airplane2Pos = [8.5e3,1e3,6000]'; airplane2Vel = [-300,100,20]'; airplane2platform = phased.Platform('MotionModel','Velocity',... 'InitialPosition',airplane2Pos,'Velocity',airplane2Vel,... 'InitialOrientationAxes',eye(3));
Настройте средство просмотра сценариев. Укажите радар как имеющую область значений луча 8 км, вертикальную ширину луча 30 ° и горизонтальную ширину луча 2 °. Аннотировать дорожки с указанием положения, скорости, высоты и области значений.
BeamSteering = [0;50]; viewer = phased.ScenarioViewer('BeamRange',8.0e3,'BeamWidth',[2;30],'UpdateRate',updateRate,... 'PlatformNames',{'Ground Radar','Turning Airplane','Vehicle','Airplane 2'},'ShowPosition',true,... 'ShowSpeed',true,'ShowAltitude',true,'ShowLegend',true,'ShowRange',true,... 'Title','Multiplatform Scenario','BeamSteering',BeamSteering);
Пройдите по циклу обработки отображения, обновляя положения радара и цели. Поверните наземный радиолокационный угол поворота на четыре степени на каждом шаге.
for n = 1:N [groundRadarPos,groundRadarVel] = groundradarplatform(updateRate); [airplane1Pos,airplane1Vel,airplane1Axes] = airplane1platform(updateRate,airplane1Accel); [vehiclePos,vehicleVel] = groundvehicleplatform(updateRate); [airplane2Pos,airplane2Vel] = airplane2platform(updateRate); viewer(groundRadarPos,groundRadarVel,[airplane1Pos,vehiclePos,airplane2Pos],... [airplane1Vel,vehicleVel,airplane2Vel]); BeamSteering = viewer.BeamSteering(1); BeamSteering = mod(BeamSteering + 4,360.0); if BeamSteering > 180.0 BeamSteering = BeamSteering - 360.0; end viewer.BeamSteering(1) = BeamSteering; pause(0.2); end