perturbations
Sintaxis
Descripción
devuelve la lista de perturbaciones de propiedad, perturbs
= perturbations(obj
)perturbs
, definidas en el objeto, obj
. El perturbs
devuelto enumera todas las propiedades perturbables. Si alguna propiedad no está perturbada, entonces su correspondiente Type
se devuelve como "Null"
y su correspondiente Value
se devuelve como {Null,Null}
.
define la compensación de perturbación perturbs
= perturbations(obj
,property
,'Selection',values
,probabilities
)property
extraída de un conjunto de values
que tienen el probabilities
correspondiente.
define el perturbs
= perturbations(obj
,property
,'TruncatedNormal',mean
,deviation
,lowerLimit
,upperLimit
)property
compensación de perturbación extraída de una distribución normal con mean
, estándar deviation
, límite inferior y límite superior.
le permite definir una función personalizada, perturbs
= perturbations(obj
,property
,'Custom',perturbFcn
)perturbFcn
, que dibuja el valor de compensación de perturbación.
Ejemplos
Propiedades de perturbación predeterminadas de waypointTrajectory
Cree un objeto waypointTrajectory
.
traj = waypointTrajectory;
Muestre las propiedades de perturbación predeterminadas utilizando el método perturbations
.
perturbs = perturbations(traj)
perturbs=2×3 table
Property Type Value
_______________ ______ __________________
"Waypoints" "None" {[NaN]} {[NaN]}
"TimeOfArrival" "None" {[NaN]} {[NaN]}
Perturbar la precisión de insSensor
Cree 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: [1⨯1 logical] RandomStream: 'Global stream'
Defina 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" {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]}
Perturbe el objeto sensor
usando 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: [1⨯1 logical] RandomStream: 'Global stream'
El RollAccuracy
está perturbado a 0.5
grados.
Perturbar trayectoria del punto de referencia
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: [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'
Defina perturbaciones en la propiedad Waypoints
y en 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" {1x2 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
Perturbar imuSensor
Parámetros
Cree un objeto imuSensor
y muestre 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 el imuSensor
tres veces con diferentes realizaciones de perturbaciones.
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
obj
— Objeto a perturbar
objetos
Objeto a perturbar, especificado como objeto. Los objetos que puedes perturbar incluyen:
property
— Propiedad perturbable
nombre de la propiedad
Propiedad perturbable, especificada como nombre de propiedad. Utilice perturbations
para obtener una lista completa de propiedades perturbables para el obj
especificado.
Para el imuSensor
System object™, puede alterar las propiedades de sus componentes de acelerómetro, giroscopio y magnetómetro. Para obtener más detalles, consulte el ejemplo Perturbar imuSensor Parámetros .
values
— Valores de compensación de perturbación
n arreglo de celdas de elementos de valores de propiedad
Valores de compensación de perturbación, especificados como un arreglo de celdas de elementos n de valores de propiedad. La función extrae aleatoriamente el valor de perturbación para la propiedad del arreglo de celdas en función de las probabilidades correspondientes de los valores especificadas en la entrada probabilities
.
probabilities
— Dibujar probabilidades para cada valor de perturbación.
n arreglo de elementos de escalar no negativo
Dibujar probabilidades para cada valor de perturbación, especificadas como un arreglo de elementos n de escalares no negativos, donde n es el número de valores de perturbación proporcionados en el values
entrada. La suma de todos los elementos debe ser igual a uno.
Por ejemplo, puede especificar una serie de par valor-probabilidad de perturbación como {x1
, x2
,…, xn
} y {p1
, p2
,…, pn
}, donde la probabilidad de sacar xi
es pi
(i
= 1, 2,…,n).
mean
— Media de distribución normal o normal truncada
escalar | vector | matriz
Media de distribución normal o normal truncada, especificada como escalar, vector o matriz. La dimensión de mean
debe ser compatible con la propiedad correspondiente que perturbas.
deviation
— Desviación estándar de distribución normal o normal truncada
escalar no negativo | vector de escalar no negativo | matriz de escalar no negativo
Desviación estándar de una distribución normal o normal truncada, especificada como un escalar no negativo, un vector de escalares no negativos o una matriz de escalares no negativos. La dimensión de deviation
debe ser compatible con la propiedad correspondiente que perturbas.
lowerLimit
— Límite inferior de distribución normal truncada
escalar | vector | matriz
Límite inferior de la distribución normal truncada, especificada como escalar, vector o matriz. La dimensión de lowerLimit
debe ser compatible con la propiedad correspondiente que perturbas.
upperLimit
— Límite superior de distribución normal truncada
escalar | vector | matriz
Límite superior de la distribución normal truncada, especificada como escalar, vector o matriz. La dimensión de upperLimit
debe ser compatible con la propiedad correspondiente que perturbas.
minVal
— Valor mínimo del intervalo de distribución uniforme.
escalar | vector | matriz
Valor mínimo del intervalo de distribución uniforme, especificado como escalar, vector o matriz. La dimensión de minVal
debe ser compatible con la propiedad correspondiente que perturbas.
maxVal
— Valor máximo del intervalo de distribución uniforme.
escalar | vector | matriz
Valor máximo del intervalo de distribución uniforme, especificado como escalar, vector o matriz. La dimensión de maxVal
debe ser compatible con la propiedad correspondiente que perturbas.
perturbFcn
— Función de perturbación
identificador de función
Función de perturbación, especificada como identificador de función. La función debe tener esta sintaxis:
offset = myfun(propVal)
propVal
es el valor de property
y offset
es el desplazamiento de perturbación de la propiedad.
Argumentos de salida
perturbs
— Perturbaciones definidas en el objeto.
tabla de propiedad de perturbación
Perturbaciones definidas en el objeto, devueltas como una tabla de propiedades de perturbaciones. La tabla tiene tres columnas:
Property
— Nombres de propiedades.Type
— Tipo de perturbaciones, devueltas como"None"
,"Selection"
,"Normal"
,"TruncatedNormal"
,"Uniform"
, o"Custom"
.Value
: valores de perturbación, devueltos como un arreglo de celdas.
Más acerca de
Especificar distribuciones de perturbación
Puede especificar la distribución de la perturbación aplicada a una propiedad específica.
Distribución de selección: la función define la compensación de perturbación como uno de los valores especificados con la probabilidad asociada. Por ejemplo, si especifica los valores como
[1 2]
y especifica las probabilidades como[0.7 0.3]
, entonces la funciónperturb
agrega un valor de compensación de1
a la propiedad con una probabilidad de0.7
y agregar un valor de compensación de2
a la propiedad con una probabilidad de0.3
. Utilice la distribución de selección cuando solo desee perturbar la propiedad con una cantidad de valores discretos.Distribución normal: la función define la compensación de perturbación como un valor extraído de una distribución normal con la media y la desviación estándar (o covarianza) especificadas. La distribución normal es la distribución más utilizada ya que imita la perturbación natural de los parámetros en la mayoría de los casos.
Distribución normal truncada: la función define la compensación de perturbación como un valor extraído de una distribución normal truncada con la media, la desviación estándar (o covarianza), el límite inferior y el límite superior especificados. A diferencia de la distribución normal, los valores extraídos de una distribución normal truncada están truncados por el límite superior e inferior. Utilice una distribución normal truncada cuando desee aplicar una distribución normal, pero los valores válidos de la propiedad estén confinados en un intervalo.
Distribución uniforme: la función define la compensación de perturbación como un valor extraído de una distribución uniforme con los valores mínimo y máximo especificados. Todos los valores en el intervalo (especificados por los valores mínimo y máximo) tienen la misma probabilidad de realización.
Distribución personalizada: personaliza tu propia función de perturbación. La función debe tener esta sintaxis:
dondeoffset = myfun(propVal)
propVal
es el valor deproperty
yoffset
es el desplazamiento de perturbación de la propiedad.
Esta figura muestra funciones de densidad de probabilidad para una distribución normal, una distribución normal truncada y una distribución uniforme, respectivamente.
Historial de versiones
Introducido en R2020b
Consulte también
Comando de MATLAB
Ha hecho clic en un enlace que corresponde a este comando de MATLAB:
Ejecute el comando introduciéndolo en la ventana de comandos de MATLAB. Los navegadores web no admiten comandos de MATLAB.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)