Apply perturbations to object
applies the perturbations defined on the object, offsets = perturb(obj)obj and returns the
offset values. You can define perturbations on the object by using the perturbations function.
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.
obj — Object for perturbationObject for perturbation, specified as an object. The objects that you can perturb include:
offsets — Property offsetsProperty offsets, returned as an array of structures. Each structure contains these fields:
| Field Name | Description |
|---|---|
Property | Name of perturbed property |
Offset | Offset values applied in the perturbation |
PerturbedValue | Property values after the perturbation |
You have a modified version of this example. Do you want to open this example with your edits?