Возмущение задано на объекте
возвращает список возмущений свойства, perturbs
= perturbations(obj
)perturbs
, заданный на объекте, obj
. Возвращенный perturbs
списки все perturbable свойства. Если какое-либо свойство не встревожено, то его соответствующий Type
возвращен как "Null"
и его соответствующий Value
возвращен как {Null,Null}
.
задает perturbs
= perturbations(obj
,property
,'Selection',values
,probabilities
)property
возмущение возместило чертивший от набора values
это имеет соответствующий probabilities
.
задает perturbs
= perturbations(obj
,property
,'TruncatedNormal',mean
,deviation
,lowerLimit
,upperLimit
)property
возмущение возместило чертивший от нормального распределения с заданным mean
Стандартное отклонение
, нижний предел и верхний предел.
позволяет вам задать пользовательскую функцию, perturbs
= perturbations(obj
,property
,'Custom',perturbFcn
)perturbFcn
, это чертит значение смещения возмущения.
waypointTrajectory
Создайте waypointTrajectory
объект.
traj = waypointTrajectory;
Покажите свойства возмущения по умолчанию с помощью perturbations
метод.
perturbs = perturbations(traj)
perturbs=2×3 table
Property Type Value
_______________ ______ __________________
"Waypoints" "None" {[NaN]} {[NaN]}
"TimeOfArrival" "None" {[NaN]} {[NaN]}
Создайте insSensor
объект.
sensor = insSensor
sensor = insSensor with properties: MountingLocation: [0 0 0] m RollAccuracy: 0.2 deg PitchAccuracy: 0.2 deg YawAccuracy: 1 deg PositionAccuracy: [1 1 1] m VelocityAccuracy: 0.05 m/s AccelerationAccuracy: 0 m/s² AngularVelocityAccuracy: 0 deg/s TimeInput: 0 RandomStream: 'Global stream'
Задайте возмущение на RollAccuracy
свойство как три значения с равной возможностью каждый.
values = {0.1 0.2 0.3}
values=1×3 cell array
{[0.1000]} {[0.2000]} {[0.3000]}
probabilities = [1/3 1/3 1/3]
probabilities = 1×3
0.3333 0.3333 0.3333
perturbations(sensor,'RollAccuracy','Selection',values,probabilities)
ans=7×3 table
Property Type Value
_________________________ ___________ ______________________________________
"RollAccuracy" "Selection" {1x3 cell} {[0.3333 0.3333 0.3333]}
"PitchAccuracy" "None" {[ NaN]} {[ NaN]}
"YawAccuracy" "None" {[ NaN]} {[ NaN]}
"PositionAccuracy" "None" {[ NaN]} {[ NaN]}
"VelocityAccuracy" "None" {[ NaN]} {[ NaN]}
"AccelerationAccuracy" "None" {[ NaN]} {[ NaN]}
"AngularVelocityAccuracy" "None" {[ NaN]} {[ NaN]}
Встревожьте sensor
объект с помощью встревожить функции.
rng(2020) perturb(sensor); sensor
sensor = insSensor with properties: MountingLocation: [0 0 0] m RollAccuracy: 0.5 deg PitchAccuracy: 0.2 deg YawAccuracy: 1 deg PositionAccuracy: [1 1 1] m VelocityAccuracy: 0.05 m/s AccelerationAccuracy: 0 m/s² AngularVelocityAccuracy: 0 deg/s TimeInput: 0 RandomStream: 'Global stream'
RollAccuracy
встревожен к 0.5
градус.
Задайте waypoint траекторию. По умолчанию эта траектория содержит два waypoints.
traj = waypointTrajectory
traj = waypointTrajectory with properties: SampleRate: 100 SamplesPerFrame: 1 Waypoints: [2x3 double] TimeOfArrival: [2x1 double] Velocities: [2x3 double] Course: [2x1 double] GroundSpeed: [2x1 double] ClimbRate: [2x1 double] Orientation: [2x1 quaternion] AutoPitch: 0 AutoBank: 0 ReferenceFrame: 'NED'
Задайте возмущения на Waypoints
свойство и TimeOfArrival
свойство.
rng(2020); perturbs1 = perturbations(traj,'Waypoints','Normal',1,1)
perturbs1=2×3 table
Property Type Value
_______________ ________ __________________
"Waypoints" "Normal" {[ 1]} {[ 1]}
"TimeOfArrival" "None" {[NaN]} {[NaN]}
perturbs2 = perturbations(traj,'TimeOfArrival','Selection',{[0;1],[0;2]})
perturbs2=2×3 table
Property Type Value
_______________ ___________ _______________________________
"Waypoints" "Normal" {[ 1]} {[ 1]}
"TimeOfArrival" "Selection" {1x2 cell} {[0.5000 0.5000]}
Встревожьте траекторию.
offsets = perturb(traj)
offsets=2×1 struct array with fields:
Property
Offset
PerturbedValue
Waypoints
свойство и TimeOfArrival
свойство изменилось.
traj.Waypoints
ans = 2×3
1.8674 1.0203 0.7032
2.3154 -0.3207 0.0999
traj.TimeOfArrival
ans = 2×1
0
2
imuSensor
ПараметрыСоздайте imuSensor
возразите и покажите его perturbable свойства.
imu = imuSensor; perturbations(imu)
ans=17×3 table
Property Type Value
______________________________________ ______ __________________
"Accelerometer.MeasurementRange" "None" {[NaN]} {[NaN]}
"Accelerometer.Resolution" "None" {[NaN]} {[NaN]}
"Accelerometer.ConstantBias" "None" {[NaN]} {[NaN]}
"Accelerometer.NoiseDensity" "None" {[NaN]} {[NaN]}
"Accelerometer.BiasInstability" "None" {[NaN]} {[NaN]}
"Accelerometer.RandomWalk" "None" {[NaN]} {[NaN]}
"Accelerometer.TemperatureBias" "None" {[NaN]} {[NaN]}
"Accelerometer.TemperatureScaleFactor" "None" {[NaN]} {[NaN]}
"Gyroscope.MeasurementRange" "None" {[NaN]} {[NaN]}
"Gyroscope.Resolution" "None" {[NaN]} {[NaN]}
"Gyroscope.ConstantBias" "None" {[NaN]} {[NaN]}
"Gyroscope.NoiseDensity" "None" {[NaN]} {[NaN]}
"Gyroscope.BiasInstability" "None" {[NaN]} {[NaN]}
"Gyroscope.RandomWalk" "None" {[NaN]} {[NaN]}
"Gyroscope.TemperatureBias" "None" {[NaN]} {[NaN]}
"Gyroscope.TemperatureScaleFactor" "None" {[NaN]} {[NaN]}
⋮
Задайте возмущение для NoiseDensity
свойство акселерометра как равномерное распределение.
perturbations(imu,'Accelerometer.NoiseDensity', ... 'Uniform',1e-5,1e-3);
Задайте возмущение для RandomWalk
свойство гироскопа как усеченное нормальное распределение.
perts = perturbations(imu,'Gyroscope.RandomWalk', ... 'TruncatedNormal',2,1e-5,0,Inf);
Загрузите записанные заранее данные IMU.
load imuSensorData.mat
numSamples = size(orientations);
Симулируйте imuSensor
три раза с различной реализацией возмущения.
rng(2021); % For repeatable results numRuns = 3; colors = ['b' 'r' 'g']; for idx = 1:numRuns % Clone IMU to maintain original values imuCopy = clone(imu); % Perturb noise values offsets = perturb(imuCopy); % Obtain the measurements [accelReadings,gyroReadings] = imuCopy(accelerations,angularVelocities,orientations); % Plot the results plot(times,gyroReadings(:,3),colors(idx)); hold on; end xlabel('Time (s)') ylabel('Z-Component of Gyro Readings (rad/s)') legend("First Pass","Second Pass","Third Pass"); hold off
obj
— Объект, который будет встревоженОбъект, который будет встревожен в виде объекта. Объекты, которые можно встревожить, включают:
property
— Свойство PerturbableСвойство Perturbable в виде имени свойства. Использование perturbations
получить полный список perturbable свойств для заданного obj
.
Для imuSensor
Система object™, можно встревожить свойства ее акселерометра, гироскопа и компонентов магнитометра. Для получения дополнительной информации смотрите Тревожить imuSensor пример Параметров.
values
— Возмущение возместило значенияВозмущение возместило значения в виде n - массив ячеек элемента значений свойств. Функция случайным образом чертит значение возмущения для свойства от массива ячеек на основе соответствующих вероятностей значений, заданных в probabilities
входной параметр.
probabilities
— Рисование вероятностей для каждого значения возмущенияРисование вероятностей для каждого значения возмущения в виде n - массив элемента неотрицательных скаляров, где n является количеством значений возмущения, введенных в values
входной параметр. Сумма всех элементов должна быть равна одному.
Например, можно задать серию пары вероятности значения возмущения как {x1
x2
, …, xn
} и {p1
, p2
pn
}, где вероятность рисования xi
pi
i
= 1, 2, …, n).
mean
— Среднее значение нормального или усеченного нормального распределенияСреднее значение нормального или усеченного нормального распределения в виде скаляра, вектора или матрицы. Размерность mean
должно быть совместимо с соответствующим свойством, которое вы тревожите.
deviation
— Стандартное отклонение нормального или усеченного нормального распределенияСтандартное отклонение нормального или усеченного нормального распределения в виде неотрицательного скаляра, вектора из неотрицательных скаляров или матрицы неотрицательных скаляров. Размерность deviation
должно быть совместимо с соответствующим свойством, которое вы тревожите.
lowerLimit
— Нижний предел усеченного нормального распределенияНижний предел усеченного нормального распределения в виде скаляра, вектора или матрицы. Размерность lowerLimit
должно быть совместимо с соответствующим свойством, которое вы тревожите.
upperLimit
— Верхний предел усеченного нормального распределенияВерхний предел усеченного нормального распределения в виде скаляра, вектора или матрицы. Размерность upperLimit
должно быть совместимо с соответствующим свойством, которое вы тревожите.
minVal
— Минимальное значение интервала равномерного распределенияМинимальное значение интервала равномерного распределения в виде скаляра, вектора или матрицы. Размерность minVal
должно быть совместимо с соответствующим свойством, которое вы тревожите.
maxVal
— Максимальное значение интервала равномерного распределенияМаксимальное значение интервала равномерного распределения в виде скаляра, вектора или матрицы. Размерность maxVal
должно быть совместимо с соответствующим свойством, которое вы тревожите.
perturbFcn
— Функция возмущенияФункция возмущения в виде указателя на функцию. Функция должна иметь этот синтаксис:
offset = myfun(propVal)
propVal
значение property
и offset
смещение возмущения для свойства.
perturbs
— Возмущения заданы на объектеВозмущения заданы на объекте, возвращенном как таблица свойств возмущения. Таблица имеет три столбца:
Property
— Имена свойства.
Type
— Тип возмущений, возвращенных как "None"
, "Selection"
, "Normal"
, "TruncatedNormal"
, "Uniform"
, или "Custom"
.
Value
— Значения возмущения, возвращенные как массив ячеек.
Можно указать, что распределение для возмущения применилось к определенному свойству.
Распределение выбора — функция задает смещение возмущения как одно из заданных значений со связанной вероятностью. Например, если вы задаете значения как [1 2]
и задайте вероятности как [0.7 0.3]
, затем perturb
функция добавляет значение смещения 1
к свойству с вероятностью 0.7
и добавьте значение смещения 2
к свойству с вероятностью 0.3
. Используйте распределение выбора, когда вы только захотите встревожить свойство со многими дискретными значениями.
Нормальное распределение — функция задает смещение возмущения как значение, чертившее от нормального распределения с заданным средним и стандартным отклонением (или ковариация). Нормальное распределение является обычно используемым распределением, поскольку это подражает естественному возмущению параметров в большинстве случаев.
Усеченное нормальное распределение — функция задает смещение возмущения как значение, чертившее от усеченного нормального распределения с заданным средним значением, стандартное отклонение (или ковариация), нижний предел и верхний предел. Отличающийся от нормального распределения, значения, чертившие от усеченного нормального распределения, являются усеченными нижним и верхним пределом. Используйте усеченное нормальное распределение, когда это необходимо, чтобы применить нормальное распределение, но допустимые значения свойства ограничиваются в интервале.
Равномерное распределение — функция задает смещение возмущения как значение, полученное из равномерного распределения с заданными минимальными и максимальными значениями. Все значения в интервале (заданный минимальными и максимальными значениями) имеют ту же вероятность реализации.
Пользовательский дистрибутив — Настраивает вашу собственную функцию возмущения. Функция должна иметь этот синтаксис:
offset = myfun(propVal)
propVal
значение property
и offset
смещение возмущения для свойства.Этот рисунок показывает функции плотности вероятности для нормального распределения, усеченного нормального распределения и равномерного распределения, соответственно.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.