step

Системный объект: поэтапный. 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$m/s^2$ в отрицательном направлении 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