perturbations
Syntaxe
Description
renvoie la liste des perturbations de la propriété, perturbs
= perturbations(obj
)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}
.
définit le décalage de perturbation perturbs
= perturbations(obj
,property
,'Selection',values
,probabilities
)property
tiré d'un ensemble de values
qui ont un probabilities
correspondant.
définit le décalage de perturbation perturbs
= perturbations(obj
,property
,'TruncatedNormal',mean
,deviation
,lowerLimit
,upperLimit
)property
tiré d'une distribution normale avec mean
, standard deviation
, limite inférieure et limite supérieure.
vous permet de définir une fonction personnalisée, perturbs
= perturbations(obj
,property
,'Custom',perturbFcn
)perturbFcn
, qui dessine la valeur de décalage de perturbation.
Exemples
Propriétés de perturbation par défaut de waypointTrajectory
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]}
Perturber la précision d'insSensor
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.
Perturber la trajectoire du waypoint
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
Perturber imuSensor
Paramètres
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
Arguments d'entrée
obj
— Objet à perturber
objets
Objet à perturber, spécifié comme objet. Les objets que vous pouvez perturber incluent :
property
— Propriété perturbable
nom de la propriété
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 .
values
— Valeurs de compensation des perturbations
n- cell array d'éléments de valeurs de propriété
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
.
probabilities
— Dessiner des probabilités pour chaque valeur de perturbation
n- tableau d'éléments de scalaire non négatif
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).
mean
— Moyenne de la distribution normale ou normale tronquée
scalaire | vecteur | matrice
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.
deviation
— Écart type de la distribution normale ou normale tronquée
scalaire non négatif | vecteur de scalaire non négatif | matrice de scalaire non négatif
É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.
lowerLimit
— Limite inférieure de la distribution normale tronquée
scalaire | vecteur | matrice
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.
upperLimit
— Limite supérieure de la distribution normale tronquée
scalaire | vecteur | matrice
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.
minVal
— Valeur minimale de l'intervalle de distribution uniforme
scalaire | vecteur | matrice
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.
maxVal
— Valeur maximale de l'intervalle de distribution uniforme
scalaire | vecteur | matrice
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.
perturbFcn
— Fonction de perturbation
poignée de fonction
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
perturbs
— Perturbations définies sur l'objet
tableau des propriétés de perturbation
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
Spécifier les distributions de perturbations
Vous pouvez spécifier la distribution de la perturbation appliquée à une propriété spécifique.
Distribution de sélection — La fonction définit le décalage de perturbation comme l'une des valeurs spécifiées avec la probabilité associée. Par exemple, si vous spécifiez les valeurs sous la forme
[1 2]
et les probabilités sous la forme[0.7 0.3]
, la fonctionperturb
ajoute une valeur de décalage de1
à la propriété avec une probabilité de0.7
et ajoutez une valeur de compensation de2
à la propriété avec une probabilité de0.3
. Utilisez la distribution de sélection lorsque vous souhaitez uniquement perturber la propriété avec un certain nombre de valeurs discrètes.Distribution normale — La fonction définit le décalage de perturbation comme une valeur tirée d'une distribution normale avec la moyenne et l'écart type spécifiés (ou covariance). La distribution normale est la distribution la plus couramment utilisée car elle imite la perturbation naturelle des paramètres dans la plupart des cas.
Distribution normale tronquée — La fonction définit le décalage de perturbation comme une valeur tirée d'une distribution normale tronquée avec la moyenne, l'écart type (ou covariance), la limite inférieure et la limite supérieure spécifiés. Contrairement à la distribution normale, les valeurs tirées d'une distribution normale tronquée sont tronquées par la limite inférieure et supérieure. Utilisez une distribution normale tronquée lorsque vous souhaitez appliquer une distribution normale, mais que les valeurs valides de la propriété sont confinées dans un intervalle.
Distribution uniforme — La fonction définit le décalage de perturbation comme une valeur tirée d'une distribution uniforme avec les valeurs minimales et maximales spécifiées. Toutes les valeurs de l'intervalle (spécifiées par les valeurs minimale et maximale) ont la même probabilité de réalisation.
Distribution personnalisée — Personnalisez votre propre fonction de perturbation. La fonction doit avoir cette syntaxe :
oùoffset = myfun(propVal)
propVal
est la valeur deproperty
etoffset
est la compensation de perturbation pour la propriété.
Cette figure montre les fonctions de densité de probabilité pour une distribution normale, une distribution normale tronquée et une distribution uniforme, respectivement.
Historique des versions
Introduit dans R2020b
Voir aussi
Commande MATLAB
Vous avez cliqué sur un lien qui correspond à cette commande MATLAB :
Pour exécuter la commande, saisissez-la dans la fenêtre de commande de MATLAB. Les navigateurs web ne supportent pas les commandes 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)