exponenta event banner

шаг

Системный объект: поэтапный. ScenarioViewer
Пакет: поэтапный

Обновление просмотра сценариев

Синтаксис

step(sSV,radar_pos,tgt_pos)
step(sSV,radar_pos,tgt_pos,radar_velocity,tgt_velocity)
step(sSV,radar_pos,radar_laxes,tgt_pos,tgt_laxes)
step(sSV,radar_pos,radar_velocity,radar_laxes,tgt_pos,tgt_velocity,tgt_laxes)

Описание

Примечание

Начиная с R2016b, вместо использования step для выполнения операции, определенной системным object™, можно вызвать объект с аргументами, как если бы это была функция. Например, y = step(obj,x) и y = obj(x) выполнять эквивалентные операции.

step(sSV,radar_pos,tgt_pos) обновляет экран просмотра сценариев с новыми позициями радара, radar_posи целевые позиции, tgt_pos. Этот синтаксис применяется, когда VelocityInputPort и OrientationInputPort имеют значение false.

step(sSV,radar_pos,tgt_pos,radar_velocity,tgt_velocity) также определяет радиолокационную скорость, radar_velocityи целевая скорость, tgt_velocity. Этот синтаксис применяется, когда VelocityInputPort имеет значение true и OrientationInputPort имеет значение false.

step(sSV,radar_pos,radar_laxes,tgt_pos,tgt_laxes) также определяет оси ориентации РЛС, radar_laxesи оси ориентации цели, tgt_laxes. Этот синтаксис применяется, когда VelocityInputPort имеет значение false и OrientationInputPort имеет значение true.

step(sSV,radar_pos,radar_velocity,radar_laxes,tgt_pos,tgt_velocity,tgt_laxes) также задает оси скорости и ориентации, когда VelocityInputPort и OrientationInputPort имеют значение true.

Примечание

Объект выполняет инициализацию при первом выполнении объекта. Эта инициализация блокирует неперестраиваемые свойства и входные спецификации, такие как размеры, сложность и тип данных входных данных. При изменении неперестраиваемого свойства или входной спецификации системный объект выдает ошибку. Чтобы изменить неперестраиваемые свойства или входные данные, необходимо сначала вызвать release метод разблокирования объекта.

Входные аргументы

развернуть все

Средство просмотра сценариев, указанное как phased.ScenarioViewer Системный объект.

Пример: phased.ScenarioViewer

Позиции РЛС, определяемые как вещественно-значная матрица 3-by-N. N - количество радиолокационных трасс, которое должно быть равно или больше единицы. Каждый столбец имеет форму [x;y;z]. Единицы измерения положения - в метрах.

Пример: [100,250,75;0,20,49;300,5,120]

Типы данных: double

Целевые позиции, заданные как вещественная матрица 3-by-N. M - количество целевых дорожек, которое должно быть равно или больше единицы. Каждый столбец имеет форму [x;y;z]. Единицы измерения положения - в метрах.

Пример: [200,40;10,40;305,15]

Типы данных: double

Радиолокационные скорости, определяемые как вещественно-значная матрица 3-by-N. N - количество радиолокационных трасс, которое должно быть равно или больше единицы. Каждый столбец имеет форму [vx;vy;vz]. Размеры radar_velocity должны соответствовать размерам radar_pos. Единицы скорости в метрах в секунду.

Пример: [100,10,0;4,0,7;100,500,0]

Типы данных: double

Целевые скорости, заданные как вещественно-значная матрица 3-by-M. M - количество целевых дорожек, которое должно быть равно или больше единицы. Каждый столбец имеет форму [vx;vy;vz]. Размеры tgt_velocity должны соответствовать размерам target_position. Единицы скорости в метрах в секунду.

Пример: [100,10,0;4,0,7;100,500,0]

Типы данных: double

Локальные координатные оси РЛС, определяемые как вещественнозначный массив 3-by-3-by-N. N - количество радиолокационных трасс. Каждая страница (третий индекс) представляет собой ортогональную матрицу 3 на 3, которая задает локальные координатные оси одного радара. Столбцы представляют собой единичные векторы, образующие оси x, y и z локальной системы координат. Единицы массива безразмерны.

Пример: [100,10,0;4,0,7;100,500,0]

Типы данных: double

Локальные координатные оси цели, заданные как массив вещественных 3-by-3-by-M. M - количество целевых дорожек. Каждая страница (третий индекс) представляет собой ортогональную матрицу 3 на 3, которая задает локальные координатные оси одного радара. Столбцы представляют собой единичные векторы, образующие оси x, y и z локальной системы координат. Единицы массива безразмерны.

Пример: [100,10,0;4,0,7;100,500,0]

Типы данных: double

Примеры

развернуть все

Визуализация следов радара и одиночной цели самолета. Радар неподвижен, а самолет движется по прямой. Поддерживайте радиолокационный луч, направленный на самолет.

Создайте радар и самолетную платформу System objects™. Установите скорость обновления 0,1 с.

updateRate = 0.1;
radarPlatform = phased.Platform(...
    'InitialPosition',[0;0;10], ...
    'Velocity',[0;0;0]);
airplanePlatforms = phased.Platform(...
    'InitialPosition',[5000.0;3500.0;6000.0],...
    'Velocity',[-300;0;0]);

Создать phased.ScenarioViewer Системный объект. Показать луч радара и аннотировать дорожки с указанием положения, скорости и высоты.

sSV = phased.ScenarioViewer('BeamRange',5000.0,'UpdateRate',updateRate,...
    'PlatformNames',{'Ground Radar','Airplane'},'ShowPosition',true,...
    'ShowSpeed',true,'ShowAltitude',true,'ShowLegend',true);

Выполните сценарий. На каждом шаге вычислите угол до цели. Используйте этот угол, чтобы направить луч радара к цели.

for i = 1:100
    [radar_pos,radar_vel] = step(radarPlatform,updateRate);
    [tgt_pos,tgt_vel] = step(airplanePlatforms,updateRate);
    [rng,ang] = rangeangle(tgt_pos,radar_pos);
    sSV.BeamSteering = ang;
    step(sSV,radar_pos,radar_vel,tgt_pos,tgt_vel);
    pause(0.1);
end

Визуализация следов бортового радара и цели наземного транспортного средства. Бортовой радар несет беспилотник, летящий на высоте 5 км.

Создание РЛС беспилотного летательного аппарата и наземного летательного аппарата phased.Platform objects™ системы. Установите скорость обновления 0,1 с.

updateRate = 0.1;
drone = phased.Platform(...
    'InitialPosition',[100;1000;5000], ...
    'Velocity',[400;0;0]);
vehicle = phased.Platform('MotionModel','Acceleration',...
    'InitialPosition',[5000.0;3500.0;0.0],...
    'InitialVelocity',[40;5;0],'Acceleration',[0.1;0.1;0]);

Создать phased.ScenarioViewer Системный объект. Показать луч радара и аннотировать дорожки с указанием положения, скорости и высоты.

viewer = phased.ScenarioViewer('BeamRange',8000.0,'BeamWidth',2,'UpdateRate',updateRate,...
    'PlatformNames',{'Drone Radar','Vehicle'},'ShowPosition',true,...
    'ShowSpeed',true,'ShowAltitude',true,'ShowLegend',true,'Title','Vehicle Tracking Radar');

Выполните сценарий. На каждом шаге вычислите угол до цели. Используйте этот угол, чтобы направить луч радара к цели.

for i = 1:100
    [radar_pos,radar_vel] = step(drone,updateRate);
    [tgt_pos,tgt_vel] = step(vehicle,updateRate);
    [rng,ang] = rangeangle(tgt_pos,radar_pos);
    viewer.BeamSteering = ang;
    viewer(radar_pos,radar_vel,tgt_pos,tgt_vel)
    pause(.1)
end

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

Представлен в R2016a