шаг

Системный объект: поэтапный. 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.

Примечание

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

Входные параметры

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

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

Пример: phased.ScenarioViewer

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Примеры

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

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

Создайте радар и объекты платформной системы самолета. Установите частоту обновления на 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. Установите частоту обновления на 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?. Задайте исходное положение самолета областью значений и азимутом от наземного радара и его повышения. Самолет в 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

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