# perturb

Apply perturbations to object

## Description

example

offsets = perturb(obj) applies the perturbations defined on the object, obj and returns the offset values. You can define perturbations on the object by using the perturbations function.

## Examples

collapse all

Define a waypoint trajectory. By default, this trajectory contains two 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'

Define perturbations on the Waypoints property and the TimeOfArrival property.

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]}

Perturb the trajectory.

offsets = perturb(traj)
offsets=2×1 struct array with fields:
Property
Offset
PerturbedValue

The Waypoints property and the TimeOfArrival property have changed.

traj.Waypoints
ans = 2×3

1.8674    1.0203    0.7032
2.3154   -0.3207    0.0999

traj.TimeOfArrival
ans = 2×1

0
2

Create an insSensor object.

sensor = insSensor
sensor =
insSensor with properties:

MountingLocation: [0 0 0]
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'

Define the perturbation on the RollAccuracy property as three values with an equal possibility each.

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]}

Perturb the sensor object using the perturb function.

rng(2020)
perturb(sensor);
sensor
sensor =
insSensor with properties:

MountingLocation: [0 0 0]
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'

The RollAccuracy is perturbed to 0.5 deg.

## Input Arguments

collapse all

Object for perturbation, specified as an object. The objects that you can perturb include:

## Output Arguments

collapse all

Property offsets, returned as an array of structures. Each structure contains these fields:

Field NameDescription
PropertyName of perturbed property
OffsetOffset values applied in the perturbation
PerturbedValueProperty values after the perturbation