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.

Примечание

Объект выполняет инициализацию при первом выполнении объекта. Эта инициализация блокирует нетронутые свойства и входные спецификации, такие как размерности, сложность и тип данных входных данных. Если вы изменяете свойство nontunable или спецификацию входа, системный объект выдает ошибку. Чтобы изменить нетронутые свойства или входы, необходимо сначала вызвать 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

Примеры

расширить все

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

Создайте радар и платформу самолета 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