perturb
Aplicar perturbaciones al objeto.
Sintaxis
Descripción
aplica las perturbaciones definidas en el objeto, offsets = perturb(obj)obj y devuelve los valores de desplazamiento. Puede definir perturbaciones en el objeto utilizando la función perturbations.
Ejemplos
Defina la trayectoria de un waypoint. Por defecto, esta trayectoria contiene dos puntos de referencia.
traj = waypointTrajectory
traj =
waypointTrajectory with properties:
SampleRate: 100
SamplesPerFrame: 1
Waypoints: [2×3 double]
TimeOfArrival: [2×1 double]
Velocities: [2×3 double]
Course: [2×1 double]
GroundSpeed: [2×1 double]
ClimbRate: [2×1 double]
Orientation: [2×1 quaternion]
AutoPitch: 0
AutoBank: 0
ReferenceFrame: 'NED'
Define perturbaciones en la propiedad Waypoints y la propiedad 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" {1×2 cell} {[0.5000 0.5000]}
Perturbar la trayectoria.
offsets = perturb(traj)
offsets=2×1 struct array with fields:
Property
Offset
PerturbedValue
La propiedad Waypoints y la propiedad TimeOfArrival han cambiado.
traj.Waypoints
ans = 2×3
1.8674 1.0203 0.7032
2.3154 -0.3207 0.0999
traj.TimeOfArrival
ans = 2×1
0
2
Crea un objeto 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'
Define la perturbación en la propiedad RollAccuracy como tres valores con la misma posibilidad cada uno.
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" {1×3 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]}
Perturbe el objeto sensor utilizando la función perturbar.
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'
El RollAccuracy se perturba a 0.5 grados.
Crea un objeto imuSensor y muestra sus propiedades perturbables.
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]}
⋮
Especifique la perturbación de la propiedad NoiseDensity del acelerómetro como una distribución uniforme.
perturbations(imu,'Accelerometer.NoiseDensity', ... 'Uniform',1e-5,1e-3);
Especifique la perturbación de la propiedad RandomWalk del giroscopio como una distribución normal truncada.
perts = perturbations(imu,'Gyroscope.RandomWalk', ... 'TruncatedNormal',2,1e-5,0,Inf);
Cargue datos IMU pregrabados.
load imuSensorData.mat
numSamples = size(orientations);Simule imuSensor tres veces con diferentes realizaciones de perturbación.
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

Argumentos de entrada
Objeto de perturbación, especificado como objeto. Los objetos que puedes perturbar incluyen:
Argumentos de salida
Compensaciones de propiedad, devueltas como un arreglo de estructuras. Cada estructura contiene estos campos:
| Nombre del campo | Descripción |
|---|---|
Property | Nombre de la propiedad perturbada |
Offset | Valores de compensación aplicados en la perturbación. |
PerturbedValue | Valores de propiedad después de la perturbación. |
Historial de versiones
Introducido en R2020b
Consulte también
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Seleccione un país/idioma
Seleccione un país/idioma para obtener contenido traducido, si está disponible, y ver eventos y ofertas de productos y servicios locales. Según su ubicación geográfica, recomendamos que seleccione: .
También puede seleccionar uno de estos países/idiomas:
Cómo obtener el mejor rendimiento
Seleccione China (en idioma chino o inglés) para obtener el mejor rendimiento. Los sitios web de otros países no están optimizados para ser accedidos desde su ubicación geográfica.
América
- América Latina (Español)
- Canada (English)
- United States (English)
Europa
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)