perturb

Apply perturbations to object

Description

example

offsets = perturb(obj) applies the perturbations defined on the object, obj. 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}    {1x2 double}

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:

        RollAccuracy: 0.2                deg
       PitchAccuracy: 0.2                deg
         YawAccuracy: 1                  deg
    PositionAccuracy: 1                  m  
    VelocityAccuracy: 0.05               m/s
        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=5×3 table
         Property            Type                  Value           
    __________________    ___________    __________________________

    "RollAccuracy"        "Selection"    {1x3 cell}    {1x3 double}
    "PitchAccuracy"       "None"         {[   NaN]}    {[     NaN]}
    "YawAccuracy"         "None"         {[   NaN]}    {[     NaN]}
    "PositionAccuracy"    "None"         {[   NaN]}    {[     NaN]}
    "VelocityAccuracy"    "None"         {[   NaN]}    {[     NaN]}

Perturb the sensor object using the perturb function.

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

        RollAccuracy: 0.5                deg
       PitchAccuracy: 0.2                deg
         YawAccuracy: 1                  deg
    PositionAccuracy: 1                  m  
    VelocityAccuracy: 0.05               m/s
        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 includes:

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

Introduced in R2020b