Contenu principal

Cette page a été traduite par traduction automatique. Cliquez ici pour voir la dernière version en anglais.

perturbations

Perturbation définie sur l'objet

Description

perturbs = perturbations(obj) renvoie la liste des perturbations de la propriété, perturbs, définies sur l'objet, obj. Le perturbs renvoyé répertorie toutes les propriétés perturbables. Si une propriété n'est pas perturbée, alors son Type correspondant est renvoyé sous la forme "Null" et son Value correspondant est renvoyé sous la forme {Null,Null}.

exemple

perturbs = perturbations(obj,property) renvoie la perturbation actuelle appliquée au property spécifié.

perturbs = perturbations(obj,property,'None') définit un property qui ne doit pas être perturbé.

perturbs = perturbations(obj,property,'Selection',values,probabilities) définit le décalage de perturbation property tiré d'un ensemble de values qui ont un probabilities correspondant.

exemple

perturbs = perturbations(obj,property,'Normal',mean,deviation) définit le décalage de perturbation property tiré d'une distribution normale avec mean spécifié et deviation standard.

perturbs = perturbations(obj,property,'TruncatedNormal',mean,deviation,lowerLimit,upperLimit) définit le décalage de perturbation property tiré d'une distribution normale avec mean, standard deviation, limite inférieure et limite supérieure.

perturbs = perturbations(obj,property,'Uniform',minVal,maxVal) définit le décalage de perturbation property tiré d'une distribution uniforme sur un intervalle [minVal, maxValue].

exemple

perturbs = perturbations(obj,property,'Custom',perturbFcn) vous permet de définir une fonction personnalisée, perturbFcn, qui dessine la valeur de décalage de perturbation.

Exemples

réduire tout

Créez un objet waypointTrajectory .

traj = waypointTrajectory;

Affichez les propriétés de perturbation par défaut à l'aide de la méthode perturbations .

perturbs = perturbations(traj)
perturbs=2×3 table
       Property         Type           Value       
    _______________    ______    __________________

    "Waypoints"        "None"    {[NaN]}    {[NaN]}
    "TimeOfArrival"    "None"    {[NaN]}    {[NaN]}

Créez un objet 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'         

Définissez la perturbation sur la propriété RollAccuracy comme trois valeurs avec chacune une possibilité égale.

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

Perturbez l'objet sensor en utilisant la fonction perturber.

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'         

Le RollAccuracy est perturbé à 0.5 deg.

Définissez une trajectoire de waypoint. Par défaut, cette trajectoire contient deux 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'

Définir les perturbations sur la propriété Waypoints et la propriété 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]}

Perturber la trajectoire.

offsets = perturb(traj)
offsets=2×1 struct array with fields:
    Property
    Offset
    PerturbedValue

La propriété Waypoints et la propriété TimeOfArrival ont changé.

traj.Waypoints
ans = 2×3

    1.8674    1.0203    0.7032
    2.3154   -0.3207    0.0999

traj.TimeOfArrival
ans = 2×1

     0
     2

Créez un objet imuSensor et affichez ses propriétés 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]}
      ⋮

Spécifiez la perturbation pour la propriété NoiseDensity de l'accéléromètre sous forme de distribution uniforme.

perturbations(imu,'Accelerometer.NoiseDensity', ...
    'Uniform',1e-5,1e-3);

Spécifiez la perturbation pour la propriété RandomWalk du gyroscope sous la forme d'une distribution normale tronquée.

 perts = perturbations(imu,'Gyroscope.RandomWalk', ...
    'TruncatedNormal',2,1e-5,0,Inf);

Chargez les données IMU préenregistrées.

load imuSensorData.mat 
numSamples = size(orientations);

Simulez le imuSensor trois fois avec différentes réalisations de perturbations.

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.

Arguments d'entrée

réduire tout

Objet à perturber, spécifié comme objet. Les objets que vous pouvez perturber incluent :

Propriété perturbable, spécifiée comme nom de propriété. Utilisez perturbations pour obtenir une liste complète des propriétés perturbables pour le obj spécifié.

Pour le imuSensor System object™, vous pouvez perturber les propriétés de ses composants accéléromètre, gyroscope et magnétomètre. Pour plus de détails, voir l'exemple Perturber imuSensor Paramètres .

Valeurs de décalage de perturbation, spécifiées sous la forme d'un cell array d'éléments n de valeurs de propriété. La fonction tire de manière aléatoire la valeur de perturbation de la propriété à partir du cell array en fonction des probabilités correspondantes des valeurs spécifiées dans l'entrée probabilities .

Dessiner des probabilités pour chaque valeur de perturbation, spécifiées sous la forme d'un tableau d'éléments n de scalaires non négatifs, où n est le nombre de valeurs de perturbation fournies dans le values Entrée . La somme de tous les éléments doit être égale à un.

Par exemple, vous pouvez spécifier une série de paires valeur-probabilité de perturbation comme suit : {x1, x2,…, xn} et {p1, p2,…, pn}, où la probabilité de tirer xi est pi (i = 1, 2, …,n).

Moyenne de la distribution normale ou normale tronquée, spécifiée sous forme scalaire, vectorielle ou matricielle. La dimension de mean doit être compatible avec la propriété correspondante que vous perturbez.

Écart type de la distribution normale ou normale tronquée, spécifié comme scalaire non négatif, vecteur de scalaires non négatifs ou matrice de scalaires non négatifs. La dimension de deviation doit être compatible avec la propriété correspondante que vous perturbez.

Limite inférieure de la distribution normale tronquée, spécifiée sous forme scalaire, vectorielle ou matricielle. La dimension de lowerLimit doit être compatible avec la propriété correspondante que vous perturbez.

Limite supérieure de la distribution normale tronquée, spécifiée sous forme scalaire, vectorielle ou matricielle. La dimension de upperLimit doit être compatible avec la propriété correspondante que vous perturbez.

Valeur minimale de l'intervalle de distribution uniforme, spécifiée sous forme scalaire, vectorielle ou matricielle. La dimension de minVal doit être compatible avec la propriété correspondante que vous perturbez.

Valeur maximale de l'intervalle de distribution uniforme, spécifiée sous forme scalaire, vectorielle ou matricielle. La dimension de maxVal doit être compatible avec la propriété correspondante que vous perturbez.

Fonction de perturbation, spécifiée comme handle de fonction. La fonction doit avoir cette syntaxe :

offset = myfun(propVal)
propVal est la valeur de property et offset est la compensation de perturbation pour la propriété.

Arguments de sortie

réduire tout

Perturbations définies sur l'objet, renvoyées sous forme de tableau de propriétés de perturbation. Le tableau comporte trois colonnes :

  • Property — Noms des propriétés.

  • Type — Type de perturbations, renvoyé sous la forme "None", "Selection", "Normal", "TruncatedNormal", "Uniform" ou "Custom".

  • Value — Valeurs de perturbation, renvoyées sous forme de cell array.

En savoir plus

réduire tout

Historique des versions

Introduit dans R2020b

Voir aussi