Визуализация мультиплатформенного сценария

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

Для просмотра документации необходимо авторизоваться на сайте