Отображение движения радаров и целей
The phased.ScenarioViewer
System object™ создаёт средство просмотра 3-D, чтобы отобразить движение радаров и целей, которые вы моделируете в симуляции радара. Можно отображать текущие положения и скорости, дорожки объектов, аннотации положения и скорости, направления радиолокационного луча и другие параметры объектов. Во время симуляции можно изменить функции, такие как области значений луча и ширина луча. Можно использовать phased.Platform
Системный объект для моделирования движущихся объектов или вы можете предоставить свои собственные динамические модели.
Этот рисунок показывает сценарий с четырьмя объектами, состоящий из наземного радара, двух самолетов и наземного транспортного средства. Вы можете просмотреть код, который сгенерировал этот рисунок в примере Визуализация Мультиплатформенного Сценария.
Чтобы создать средство просмотра сценариев:
Определите и настройте phased.ScenarioViewer
Системный объект. См. «Конструкция». Можно задать свойства системного объекта во время конструкции или оставить их значениями по умолчанию. Некоторые свойства, заданные во время конструкции, могут быть изменены позже. Эти свойства настраиваются.
Вызовите step
метод обновления радиолокационных и целевых отображаемых позиций в соответствии со свойствами phased.ScenarioViewer
Системный объект. Изменять настраиваемые свойства можно в любой момент.
Примечание
Начиная с R2016b, вместо использования step
метод для выполнения операции, заданной системным объектом, можно вызвать объект с аргументами, как если бы это была функция. Для примера, y = step(obj,x)
и y = obj(x)
выполнять эквивалентные операции.
создает сценарий viewer Системный объект, sIS
= phased.ScenarioViewersIS
со значениями свойств по умолчанию.
возвращает средство просмотра Системный объект, sIS
= phased.ScenarioViewer(Name,Value)sIS
, с любым заданным свойством Name
установить на заданное Value
. Name
должны находиться внутри одинарных кавычек (''
). Можно задать несколько аргументы пары "имя-значение" в любом порядке как Name1,Value1,...,NameN,ValueN
.
Name
- Имя заголовка окна'Scenario Viewer'
(по умолчанию) | вектор символовИмя заголовка окна, заданное как вектор символов. The Name
свойство и Title
свойство отличается.
Пример: 'Multitarget Viewer'
Типы данных: char
ReferenceRadar
- Эталонный радарный индекс1
(по умолчанию) | положительное целое числоЭталонный радарный индекс, заданный как положительное целое число. Это свойство выбирает один из радаров в качестве ссылки радара. Его значение должно быть меньше или равно количеству радаров, которые вы задаете в radar_pos
аргумент step
способ. Это свойство настраивается. Области значений цели, радиальная скорость, азимут и повышение заданы относительно этого радара.
Пример: 2
Типы данных: double
ShowBeam
- Показать радиолокационные лучи'ReferenceRadar'
(по умолчанию) | 'None'
| 'All'
Включите отображение радиолокационных лучей, заданное как 'ReferenceRadar'
, 'None'
, или 'All'
. Эта опция определяет, какие радиолокационные лучи будут показаны.
Опция | Балки для показа |
---|---|
'ReferenceRadar' | Покажите луч радара, заданный в ReferenceRadar свойство. |
'None' | Не показывать радиолокационные лучи. |
'All' | Показать лучи для всех радаров. |
Это свойство настраивается.
Пример: 'All'
Типы данных: char
BeamWidth
- Вертикальная и горизонтальная ширина радиолокационного лучаВертикальная и горизонтальная ширины радиолокационного луча, заданные как положительный действительный скаляр, вектор-столбец с 2 элементами, вектор-строка N-элемента или матрица с 2 N байта. N - количество радаров. Все скаляры, вектор и матричные значения являются положительными, реальными числами между 0-360 °. Модули указаны в степенях.
Спецификация значения | Интерпретация |
---|---|
Скаляр | Горизонтальная и вертикальная ширины радиолокационного луча равны и идентичны для всех радаров. |
2-элементный вектор-столбец | Первая строка задает горизонтальную ширину балки. Вторая строка задает вертикальную ширину балки. Эти значения идентичны для всех радаров. |
N вектор-строка элемента | Каждый элемент применяется к одному радару. Вертикальная и горизонтальная ширины луча для каждого радара равны. |
2-by- N матрица | Каждый столбец применяется к одному радару. Первая строка задает горизонтальную ширину луча, а вторая строка задает вертикальную ширину луча для каждого радара. |
Когда CameraPerspective
установлено в 'Radar'
Системный объект использует это свойство для вычисления значения CameraViewAngle
. Это свойство настраивается.
Пример: [20 10; 18 9]
Типы данных: double
BeamRange
- Радиолокационная область значений лучаРадиолокационная область значений луча, заданный как положительный скаляр или вектор-строка N-элемента, где N - количество радаров. Модули измерения указаны в метрах. При задании в виде скаляра все радары имеют одинаковую область значений луча. При задании в качестве вектора каждый элемент соответствует одному радару. Это свойство настраивается.
Пример: [1000 1500 850]
Типы данных: double
BeamSteering
- Направление рулевого управления балкой[0;0]
(по умолчанию) | положительный вектор-столбец из 2 элементов с реальным значением | положительный вектор-строка из N-элемента с реальным значениемНаправления рулевого управления лучом радаров, заданные как действительный 2-элементный вектор-столбец положительных значений или 2-байтовая N вещественная матрица положительных значений. N - количество радаров. Углы поворота луча соответствуют локальным координатным осям каждого радара. Модули указаны в степенях. Каждый столбец принимает форму [azimuthangle;elevationangle]
. Когда задан только один столбец, направления рулевого управления лучом всех радаров одинаковы. Азимутальные углы составляют от -180 ° до 180 °, а вертикальные - от -90 ° до 90 °. Это свойство настраивается.
Пример: [20 60 35; 5 0 10]
Типы данных: double
VelocityInputPort
- Включите вход скоростиtrue
(по умолчанию) | false
Включите входные параметры скорости, radar_velocity
и tgt_velocity
, из step
метод, заданный как true
или false
. Установка значения свойства true
включает входные параметры. Когда это свойство false
векторы скорости оцениваются из изменения положения между последовательными обновлениями, разделенными интервалом обновления. Интервал обновления является обратным UpdateRate
значение.
Пример: false
Типы данных: logical
OrientationInputPort
- Включите вход ориентацииfalse
(по умолчанию) | true
Включите вход осей ориентации локальной системы координат, radar_laxes
и tgt_laxes
, к step
метод, заданный как false
или true
. Установка значения свойства true
включает входные параметры. Когда это свойство false
оси ориентации выровнены по глобальным координатным осям.
Пример: true
Типы данных: logical
UpdateRate
- Частота обновления средства просмотра сценариев1
(по умолчанию) | positive scalar
Частоты обновления средства просмотра сценария, заданные как положительная скалярная величина. Модули указаны в герцах.
Пример: 2.5
Типы данных: double
Title
- Отобразить заголовок''
(по умолчанию) | вектор символовОтобразите заголовок, заданный как вектор символов. The Title
свойство и Name
свойство отличается. Заголовок отображения появляется в верхней части рисунка. Имя появляется в верхней части окна рисунка. Это свойство настраивается.
Пример: 'Radar and Target Display'
Типы данных: char
PlatformNames
- Имена радаров и целей'Auto'
(по умолчанию) | 1-байт- (N+M) ячеек массива векторов символовИмена, присвоенные радарам и целям, заданные как 1-байт- (N+M) ячеек векторов символов. N - количество радаров, а M - количество целей. Упорядочивайте значения камеры по именам радаров, далее указываются имена целей. Имена появляются в легенде и аннотациях. Когда вы задаете PlatformNames
на 'Auto'
, имена создаются последовательно, начиная с 'Radar 1'
для радаров и 'Target 1'
для целей.
Пример: {'Stationary Radar','Mobile Radar','Airplane'}
Типы данных: cell
TrailLength
- Длина видимых дорожек500
(по умолчанию) | положительное целое число | (N+M) вектор -length положительных целых чиселДлина видимости объектных дорожек, заданная как положительное целое или (N+M) -ленговый вектор положительных целых чисел. N - количество радаров, а M - количество целей. Когда TrailLength
является скаляром, все дорожки имеют одинаковую длину. Когда TrailLength
является вектором, каждый элемент вектора задает длину соответствующей радиолокационной или целевой траектории. Упорядочивайте записи радаров, за которыми следуют цели. Каждый вызов на step
метод генерирует новую видимую точку. Это свойство настраивается.
Пример: [100,150,100]
Типы данных: double
CameraPerspective
- Перспектива камеры'Auto'
(по умолчанию) | 'Custom'
| 'Radar'
Перспектива камеры, заданная как 'Auto'
, 'Custom'
, или 'Radar'
. Когда вы устанавливаете это свойство на 'Auto'
, Системный объект оценивает соответствующие значения положения камеры, ориентации и угла обзора, чтобы показать все дорожки. Когда вы устанавливаете это свойство на 'Custom'
можно задать положение, ориентацию и углы камеры с помощью свойств камеры или панели инструментов камеры. Когда вы устанавливаете это свойство на 'Radar'
Системный объект определяет положение камеры, ориентацию и углы от положения радара и направления рулевого управления радиолокационным лучом. Это свойство настраивается.
Пример: 'Radar'
Типы данных: char
CameraPosition
- Положение камеры[x,y,z]
вектор вещественных значенийПоложение камеры, заданное как [x,y,z]
вектор вещественных значений. Модули измерения указаны в метрах. Это свойство применяется при установке CameraPerspective
на 'Custom'
. Когда вы не задаете это свойство, системный объект выбирает значения на основе вашего строения отображения. Это свойство настраивается.
Пример: [100,50,40]
Типы данных: double
CameraOrientation
- Ориентация камеры[pan,tilt,roll]
вектор положительных, вещественных значенийОриентация камеры, заданная как [pan,tilt,roll]
вектор положительных, вещественных значений. Модули указаны в степенях. Углы панорамирования и крена берут значения от –180° до 180°. Угол наклона принимает значения от –90° до 90°. Вращение камеры выполняется в порядке: панорамирование, наклон и крен. Это свойство применяется при установке CameraPerspective
на 'Custom'
. Когда вы не задаете это свойство, системный объект выбирает значения на основе вашего строения отображения. Это свойство настраивается.
Пример: [180,45,30]
Типы данных: double
CameraViewAngle
- Угол поля зрения камерыУгол поля зрения камеры, заданный как реальный скаляр. Модули указаны в степенях. Значения угла обзора находятся в области значений от 0 ° до 360 °. Это свойство применяется при установке CameraPerspective
на 'Custom'
. Когда вы не задаете это свойство, системный объект выбирает значения на основе вашего строения отображения. Это свойство настраивается.
Пример: 75
Типы данных: double
ShowLegend
- Показать легенду средства просмотраfalse
(по умолчанию) | true
Опция для отображения легенды средства просмотра, заданная как false
или true
. Это свойство настраивается.
Пример: true
Типы данных: logical
ShowGround
- Показать наземную плоскость сценарияtrue
(по умолчанию) | false
Опция для отображения плоскости земли сценария Viewer, заданная как true
или false
. Это свойство настраивается.
Пример: false
Типы данных: logical
ShowName
- Опция аннотации радарных и целевых треков с именамиtrue
(по умолчанию) | false
Аннотировать радарные и целевые треки с именами, заданными как true
или false
. Вы можете задать пользовательские имена платформ, используя PlatformNames
. Это свойство настраивается.
Пример: false
Типы данных: logical
ShowPosition
- Аннотировать радарные и целевые треки с положениямиfalse
(по умолчанию) | true
Опция для аннотации радарных и целевых треков с положениями, заданная как false
или true
. Это свойство настраивается.
Пример: true
Типы данных: logical
ShowRange
- Аннотировать радарные и целевые треки с областями значенийfalse
(по умолчанию) | true
Опция для аннотации радарных и целевых треков с областью значений от радара ссылки, заданная как false
или true
. Это свойство настраивается.
Пример: true
Типы данных: logical
ShowAltitude
- Аннотировать радарные и целевые треки с высотойfalse
(по умолчанию) | true
Опция для аннотирования радарных и целевых треков с высотой, заданная как false
или true
. Это свойство настраивается.
Пример: true
Типы данных: logical
ShowSpeed
- Аннотировать радарные и целевые треки со скоростьюfalse
(по умолчанию) | true
Опция для аннотирования радарных и целевых треков со скоростью, заданная как false
или true
. Это свойство настраивается.
Пример: true
Типы данных: logical
ShowRadialSpeed
- Аннотировать радарные и целевые дорожки с радиальной скоростьюfalse
(по умолчанию) | true
Опция для аннотирования радарных и целевых треков с радиальной скоростью, заданная как false
или true
. Радиальная скорость относительна ссылка радара. Это свойство настраивается.
Пример: true
Типы данных: logical
ShowAzEl
- Аннотировать радарные и целевые треки с азимутом и повышениемfalse
(по умолчанию) | true
Опция аннотации радарных и целевых треков с азимутом и углами возвышения относительно ссылка радара, заданная как false
или true
. Это свойство настраивается.
Пример: true
Типы данных: logical
Position
- Размер и положение окна средства просмотра[left bottom width height]
вектор положительных, вещественных значенийРазмер и положение окна средства просмотра сценариев, заданные как [left bottom width height]
вектор положительных, вещественных значений. Модули указаны в пикселях.
left
устанавливает положение левого края окна.
bottom
устанавливает положение нижнего ребра окна.
width
задает ширину окна.
height
устанавливает высоту окна.
Когда вы не задаете это свойство, окно находится в центре экрана, с width
и height
взятие значений 410
и 300
пикселей, соответственно. Это свойство настраивается.
Пример: [100,200,800,500]
Типы данных: double
ReducePlotRate
- Включить пониженную скорость построения графикаtrue
(по умолчанию) | false
Опция уменьшения скорости графика для улучшения эффективности, заданная как true
или false
. Установите это свойство на true
для обновления средства просмотра с пониженной частотой. Установите это свойство на false
для обновления средства просмотра с каждым вызовом в step
способ. Этот режим отрицательно влияет на эффективность средства просмотра. Это свойство настраивается.
Пример: false
Типы данных: logical
скрыть | Скрыть окно средства просмотра сценариев |
сброс | Сброс состояния Системного объекта |
показать | Показать окно средства просмотра сценариев |
шаг | Обновление отображения средства просмотра сценариев |
Общий для всех системных объектов | |
---|---|
release | Разрешить изменение значения свойства системного объекта |
Визуализируйте пути радара и одной самолетной цели. Радар стационарный, а самолет движется в прямую линию. Поддерживайте радиолокационный луч, указывающий на самолет.
Создайте радар и платформу самолета 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
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.