Считайте зарегистрированные данные
[
возвращается тот записал набор данных во времени симуляции, simTime
,poses
,detections
,sensorConfigs
,sensorPlatformIDs
,emissions
,emitterConfigs
,emitterPlatformIDs
] = read(TSR
)simTime
, из сценария отслеживания, записывающего TSR
.
Загрузите зарегистрированные данные из записанного заранее сценария под названием recordedScenario
. Создайте trackingScenarioRecording
объект с помощью записанных данных.
load recordedScenario recordedData recording = trackingScenarioRecording(recordedData);
Создайте театральный график отобразить записанные данные с помощью нескольких плоттеров.
tp = theaterPlot('AxesUnits', ["km" "km" "km"], 'XLimits',[-50 50]*1e3,... 'YLimits',[-50 50]*1e3,'ZLimits', [-20 20]*1e3); to = platformPlotter(tp,'DisplayName','Tower','Marker','d'); pp = platformPlotter(tp,'DisplayName','Targets'); dp = detectionPlotter(tp,'DisplayName','Detections','MarkerFaceColor','black'); cp = coveragePlotter(tp,'DisplayName','Radar Beam'); coverage = struct('Index',1,'LookAngle',[0;-7],'FieldOfView',[1;10],... 'ScanLimits',[0 365;-12 -2],'Range',100e3,'Position',[0;0;-15],... 'Orientation',eye(3));
Запустите записанный сценарий и анимируйте результаты.
scanBuffer = {}; while ~isDone(recording) % Step the reader to read the next frame of data. [simTime,poses,dets,configs] = read(recording); scanBuffer = [scanBuffer;dets]; %#ok<AGROW> m = configs.MeasurementParameters(1).Orientation; coverage.LookAngle(1) = atan2d(m(1,2),m(1,1)); plotPlatform(to,poses(1).Position); plotPlatform(pp,reshape([poses(2:4).Position]',3,[])'); plotCoverage(cp,coverage); if ~isempty(dets) plotDetection(dp,cell2mat(cellfun(@(c) c.Measurement(:)', scanBuffer, 'UniformOutput', false))); end % Clear the buffer when a 360 degree scan is complete. if configs.IsScanDone scanBuffer = {}; dp.clearData; end end
TSR
— Отслеживание записи сценарияtrackingScenarioRecording
объектОтслеживание записи сценария в виде trackingScenarioRecording
объект.
simTime
— Время симуляцииВремя симуляции, возвращенное как неотрицательный скаляр.
poses
— Положения платформПоложения платформ, возвращенных как массив структур. Поля каждой структуры:
Поле | Описание |
---|---|
PlatformID | Уникальный идентификатор для платформы в виде положительного целого числа. Это - обязательное поле без значения по умолчанию. |
ClassID | Пользовательское целое число раньше классифицировало тип цели в виде неотрицательного целого числа. Нуль резервируется для несекретных типов платформы и является значением по умолчанию. |
Position | Положение цели в сценарии координирует в виде с действительным знаком 1 3 вектор-строку. Это - обязательное поле без значения по умолчанию. модули являются метрами. |
Velocity | Скорость платформы в сценарии координирует в виде с действительным знаком 1 3 вектор-строку. модули являются метрами в секунду. Значением по умолчанию является |
Acceleration | Ускорение платформы в координатах сценария в виде 1 3 вектора-строки в метрах в секунду придало квадратную форму. Значением по умолчанию является |
Orientation | Ориентация платформы относительно локальной навигации сценария структурирует в виде скалярного кватерниона или 3х3 матрицы вращения. Ориентация задает вращение системы координат от локальной системы координат навигации до текущей системы координат тела платформы. Модули являются безразмерными. Значением по умолчанию является |
AngularVelocity | Скорость вращения платформы в сценарии координирует в виде с действительным знаком 1 3 вектор. Величина вектора задает угловую скорость. Направление задает ось по часовой стрелке вращения. модули являются степенями в секунду. Значением по умолчанию является |
detections
— ОбнаруженияobjectDetection
объектыОбнаружения, возвращенные как массив ячеек objectDetection
объекты.
sensorConfigs
— Настройки датчикаНастройки датчика, возвращенные как массив структур. Поля каждой структуры:
Поле | Описание |
SensorIndex | Уникальный индекс датчика, возвращенный как положительное целое число. |
IsValidTime | Допустимое время обнаружения, возвращенное как |
IsScanDone |
|
FieldOfView | Поле зрения датчика, возвращенного как 2 1 вектор положительных действительных значений, [azfov; elfov]. azfov и elfov представляют поле зрения в азимуте и вертикальном изменении, соответственно. |
MeasurementParameters | Параметры измерения датчика, возвращенные как массив структур, содержащих координатную систему координат, преобразовывают, должен был преобразовать положения и скорости в системе координат верхнего уровня к системе координат датчика тока. |
sensorPlatformIDs
— Идентификаторы платформы датчиковИдентификаторы платформы датчиков, возвращенных как массив неотрицательных целых чисел.
emissions
— ЭмиссияradarEmission
или sonarEmission
объектыЭмиссия, возвращенная как массив ячеек radarEmission
или sonarEmission
объекты.
emitterConfigs
— Эмиттерные настройкиЭмиттерные настройки, возвращенные как массив структур. Поля каждой структуры:
Поле | Описание |
EmitterIndex | Уникальный эмиттерный индекс, возвращенный как положительное целое число. |
IsValidTime | Допустимое время эмиссии, возвращенное как |
IsScanDone | Завершил ли эмиттер сканирование, возвращенное как |
FieldOfView | Поле зрения эмиттера, возвращенного как двухэлементный вектор [азимут; вертикальное изменение] в градусах. |
MeasurementParameters | Эмиттерные параметры измерения, возвращенные как массив структур, содержащих координатную систему координат, преобразовывают, должен был преобразовать положения и скорости в системе координат верхнего уровня к текущей эмиттерной системе координат. |
emitterPlatformIDs
— Идентификаторы платформы эмиттеровИдентификаторы платформы эмиттеров, возвращенных как массив неотрицательных целых чисел.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.