Main Content

Esta página se ha traducido mediante traducción automática. Haga clic aquí para ver la última versión en inglés.

perturbations

Perturbación definida en el objeto.

Desde R2020b

Descripción

ejemplo

perturbs = perturbations(obj) devuelve la lista de perturbaciones de propiedad, 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}.

perturbs = perturbations(obj,property) devuelve la perturbación actual aplicada al property especificado.

perturbs = perturbations(obj,property,'None') define un property que no debe ser perturbado.

ejemplo

perturbs = perturbations(obj,property,'Selection',values,probabilities) define la compensación de perturbación property extraída de un conjunto de values que tienen el probabilities correspondiente.

perturbs = perturbations(obj,property,'Normal',mean,deviation) define el desplazamiento de perturbación property extraído de una distribución normal con mean especificado y deviation estándar.

perturbs = perturbations(obj,property,'TruncatedNormal',mean,deviation,lowerLimit,upperLimit) define el 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.

ejemplo

perturbs = perturbations(obj,property,'Uniform',minVal,maxVal) define el desplazamiento de perturbación property extraído de una distribución uniforme en un intervalo [minVal, maxValue].

perturbs = perturbations(obj,property,'Custom',perturbFcn) le permite definir una función personalizada, perturbFcn, que dibuja el valor de compensación de perturbación.

Ejemplos

contraer todo

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]}

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.

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

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

Figure contains an axes object. The axes object with xlabel Time (s), ylabel Z-Component of Gyro Readings (rad/s) contains 3 objects of type line. These objects represent First Pass, Second Pass, Third Pass.

Argumentos de entrada

contraer todo

Objeto a perturbar, especificado como objeto. Los objetos que puedes perturbar incluyen:

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 .

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 .

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).

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.

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.

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.

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.

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.

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.

Función de perturbación, especificada como identificador de función. La función debe tener esta sintaxis:

offset = myfun(propVal)
donde propVal es el valor de property y offset es el desplazamiento de perturbación de la propiedad.

Argumentos de salida

contraer todo

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

contraer todo

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ón perturb agrega un valor de compensación de 1 a la propiedad con una probabilidad de 0.7 y agregar un valor de compensación de 2 a la propiedad con una probabilidad de 0.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:

    offset = myfun(propVal)
    donde propVal es el valor de property y offset 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.

Perturbation Distributions

Historial de versiones

Introducido en R2020b

Consulte también