Apply perturbations to object
applies the perturbations defined on the object, offsets
= perturb(obj
)obj
. 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} {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.
obj
— Object for perturbationObject for perturbation, specified as an object. The objects that you can perturb includes:
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?